WordPress 自定义字段

By | 08/05/2009

原文 http://fairyfish.net/2007/08/05/wordpress-custom-fields/

自定义字段是如何工作的

当你创建或者编辑日志/页面的时候,你可以增加一个自定义字段,一个自定义字段有两个显而易见的变量 — 键 ( key ) 和值 ( value )。

键是数据的 “ID” — 如果你想显示你写每篇日志当时的心情,你可以把键叫做 “mood”,值就是,显而易见,这里你可以为 “高兴” 或者 “愤怒”。

当你为一篇日志/页面创建一个自定义字段的时候,你所写的信息将会存储到日志/页面中。换句话说,你写的数据属于当前的日志/页面,所以你能够显示你日志/页面相关的自定义字段信息。

我是如何在博客上显示自定义字段的数据

当你想显示日志/页面的数据的时候,有一些不同的选择。我将提供两种简单的方法和一些更高级的用法。

首先,你可以适用 the_meta() 这个模版函数,它会自动输出一个无序的列表,如下所示:

Key1: Value of “Key1″
Key2: Value of “Key2″
Key3: Value of “Key3″

第二个我会提到的是函数:get_post_meta($post_id, $key, $single = true)。这个函数能够能让你按自己所需列出自定义字段。通过使用 get_post_meta($post->ID, “Key2″, $single = true); 可以返回自定义字段 “Key3″ 的值,你可以输出它,如 “echo get_post_meta($post->ID, “Key2″, $single = true);”

一点高级用法

我将给你展示一些高级适用自定义字段的用法,但是我不会解释的非常的详细,这个需要一点 PHP 的基础。

所以,你可能想用一张表情图片显示你写日志时候的心情?那么就去制作这些表情图片,并把它们命名为 Sad.gif, Mad.gif and Happy.gif 。代码片段如下:

<img src=”/smilies/<?php echo get_post_meta($post->ID, “mood”, $single = true); ?>.gif” alt=”mood” />如果你在看书,可能你想写日志时候显示你正在看什么书 — 这个很容易,但是一旦你读的不止一本书并想把他们全部一起显示出呢?

WordPress 允许你在不止一篇日志中使用相同的自定义字段健,你可以通过把 “$single = true” 改成 “$single = false” 来“群组”这些键。换句话说,它会返回一个数组,代码如下:

<?php $books = get_post_meta($post->ID,”books”, $single = false); ?>
<p>I am currently reading:</p>
<ul>
<?php foreach( $books as $book ) {
    echo “<li>”.$book.”</li>”;
}?>
</ul>

自定义字段可以让一切变得容易

很多时候,当你查找找 CMS 系统,其实你可以不用跳出 WordPress 去查找。通过使用自定义字段,你可以很快给日志和页面附上额外的信息,脚注等。还能很快改变信息显示方式,而不用编辑你所有的日志。

在 Iblue 模版中 修改\templates\topic-list.php文件

<span><?php _e(‘&#x5F52;&#x7C7B;:’, ‘iblue’); ?> <?php the_category(‘, ‘); ?></span>
<span><?php _e(‘&#x6765;&#x6E90;:’, ‘iblue’); ?><?php echo get_post_meta($post->ID, “sources”, $single = true); ?></span> 
<span><?php _e(‘&#x4F5C;&#x8005;:’, ‘iblue’); ?><?php echo get_post_meta($post->ID, “writer”, $single = true); ?></span>
<?php if (function_exists(‘the_views’)) : ?><span><?php _e(‘&#x4EBA;&#x6C14;:’, ‘iblue’); ?> <?php the_views(); ?></span><?php endif; ?>
<span><?php _e(‘&#x53D1;&#x5E03;&#x65E5;&#x671F;:’, ‘iblue’); ?> <?php the_time(‘Y-m-d’) ?></span>

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据