使用WordPress自定义字段
导航: 上一页 | 首页 | WordPress中文论坛 | WordPress主机 | CMS程序 | 论坛程序 | ECShop | ShopNC | PowerEasy
WordPress允许日志撰写者为日志分派自定义字段。此额外的任意信息即是元数据(meta-data)。该元数据可以包括的信息如下:
- 心情:愉快
- 正在阅读:灰姑娘
- 正在聆听:终日摇滚
- 天气:湿热
使用额外的编码就可以完成较复杂的动作,例如使用元数据来存储某日志的过期日期。
元数据是由key/value对(pair)处理的。key是元数据元素的名称,而value则是与信息相关的在各日志上元数据列表中出现的信息。
Key在一篇日志中可多次使用。比如,如果你正在读两本不同类型的书(比如在工作中需要阅读某本技术书籍,而在家则是读小说),那么你就可以创建一个"正在阅读"的key,然后可以在同一篇日志中使用两次,即一个类型的书使用一次。
这里给出此信息的样例:
正在阅读:凯文的幻虎世界 今日心情:愉悦
用法[ ]
基于上面给出的例子,让我们将其付诸实践吧。我们要添加两个自定义字段,一个是"正在阅读",还有一个就是"今日心情"了。以下将指导你使用自定义字段将此信息添加至日志。
- 在写好日志后,下拉到写有自定义字段(Custom Fields)的地方。
- 现在来创建名为"正在阅读"的自定义字段,在标为Key的文本输入区中输入文本"正在阅读"(不要带引号)。
- 现在就要为新建的Key分派一个Value了,在我们的例子中就是正在读的书的名字,即"凯文的幻虎世界"。在Value字段中输入"凯文的幻虎世界",不要带引号。
- 点击添加自定义字段(Add Custom Field)按钮来保存该日志的此条自定义信息。
添加"今日心情"的方法如上,重复套用即可。向key添加"今日心情",并在value文本框内输入你今天的心情,然后点击保存(SAVE)即可。
在下一篇日志中,你就可以向元数据添加新书还有新的心情了。在自定义字段(Custom Fields)部分中,之前输入的自定义字段Key呈下拉列表的样式。选择"正在阅读"然后在value中输入正在阅读的新书书名。点击添加自定义字段(Add Custom Field)重复该步继续进行"今日心情"的添加就可以了。
你仅需要新建"KEY"一次,在此之后你可以针对每篇文章为该key分派一个value。你还可以为某个key分派多个Value。如果某人同时阅读多本书籍的话,这就变得有用了。
显示自定义字段[ ]
添加完自定义字段后就要将它们显示出来。要显示各日志的自定义字段,需要使用the_meta()模板标签。该标签必须位于WordPress主循环(loop)中才能起作用。许多人将the_meta()模板标签添加到日志结尾或日志元数据部分。这里给出使用<?php the_meta(); ?>标签的基本例子
在源代码中看起来如下:
模板标签将整个元数据自动添加到名为post-meta的CSS风格中。key位于名为post-meta-key 的span中,因此你可以在风格页中进行风格定义。所有这些都在未经排序的列表中给出。
要自定义post-meta列表的外观,就需要修改风格页中的特点。那就让我们向例子中添加一些风格吧。风格页元素看起来如下:
WordPress官方插件目录中还有很多类似的WordPress插件,它们能够为元标签的显示提供更多更棒的特色。用Google搜索自定义字段插件也能找到更多类似插件的。
自定义字段的相关进阶技巧[ ]
以下给出元数据及自定义字段获取和定制相关的进阶技巧。
获取自定义字段[ ]
要获取元数值,请使用get_post_meta()函数:
get_post_meta($post_id, $key, $single);
- $post_id 是元数值用于的日志ID。使用 $post->ID 来获取某日志的ID。
- $key 字串含有所需元数值的名称。
- $single 可以为true 或 false。如果设为true,函数就会返回单个字串形式的结果。如果是false,或没有进行设定的话,函数就会返回自一个定义字段的数组。
细节[ ]
PostMeta信息是保存在一个新表中的,即$wpdb->postmeta。该表含有4个字段:
meta_id: 各文章的唯一id post_id: 该元数据对应日志的ID meta_key: 'key'的名称 meta_value: 与key相关联的数值
该表的数据被拉入一个名为$post_meta_cache的具有结构的多维数组中,此行为就发生在 $posts数组于 wp-blog-header.php中被获取之后。此变量将仅含有为当前页面获取的日志列表的数值。该数组的结构看起来如下:
因此,如果你想从第256号日志中获取"正在阅读"的数值,就要使用如下的PHP代码:
别忘了$readinglist 是一个数组,而不是单个数值。 WordPress 2.1中,$post_meta_cache不再使用。请通过下面的函数来获取元数值
PostMeta函数[ ]
内部函数[ ]
这些函数仅用于WordPress主循环(loop)之内,所有这些函数返回的都是数组。
- get_post_custom() :获取当前日志的所有key/value数据。
- get_post_custom_keys() :获取当前日志的所有key名称的列表。
- get_post_custom_values($key) :获取当前日志上某特定key的数值列表。
- get_post_meta($post_id, $key, $single = false) :在WP 1.5和更高版本中,此函数返回元信息,而不会产生缓存方面的问题。该函数需要日志id,key,并且如果$single设定为TRUE,则仅返回第一个结果(并非为一个数组)为PHP之用。
这将输出结果元数值(注意加入了"echo"):
<?php $key="mykey"; echo get_post_meta($post->ID, $key, true); ?>
模板函数[ ]
值写此文时,可用的模板函数仅有:
the_meta() :echo一个未经排序的列表,其中含有当前日志的元数据,并具有针对UL和LI的类别,分别为post-meta 和 post-meta-key。
我们希望诸位开发者的脑瓜里能时不时冒出点新点子,让日志元数据的使用以插件的形式传达给用户。the_meta() 模板函数就是这么一个榜样。
现在你只能添加和删除文章。而修改已有文章的功能将在以后推出。