A-A+

wordpress网站建设:自定义字段

2015年01月30日 WordPress 暂无评论 阅读 3,842 views 次

 

 

一、wordpress自定义字段介绍

WordPress 自定义字段是对 WordPress Posts 表的一种补充和扩展,一般来讲 WordPress 提供了博客日志的作者,分类,标签,时间等,然后你可以根据你的需要自定义出一系列的其他信息。所有的这些字段和值,都保存在数据库的 wp_post_meta 这个数据表里。

开启wordpress自定义字段

wordpress自定义字段界面

二、wordpress自定义字段工作原理

WordPress 自定义字段通默认只有两个的变量:键 ( key ) 和值 ( value )。比如你想显示你写日志当时的心情,你可以把键叫做 “mood”(心情),显然在这里值就是 “高兴” 或者 “愤怒”。

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

 

三、如何在页面中显示自定义字段

1、使用 the_meta() 这个模版函数,它会自动输出一个无序的列表,如下所示:

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

2、使用get_post_meta($post_id, $key, $single = true)

这个函数能够能按照自己的需求列出自定义字段。如通过使用 get_post_meta($post->ID, “Key2″, $single = true); 可以返回自定义字段 “Key2″ 的值,你可以输出它,如 “echo get_post_meta($post->ID, "Key2″, $single = true);

 

四、wordpress自定义字段用法

1、先定义2个字段,分别是:

名称:product-name     值:apple

名称:product-price      值:2000

 

2、在主题文件中合适的位置加入以下内容

<?php
/*
* 在这里添加我们的自定义字段
*/

// 设置自定义字段的留空时(没有设置时)的默认值

$product_name_def = '默认名称';

$product_price_def = 0;

$product_name = get_post_meta($post->ID, 'product_name', true);
// 检查这个字段是否有值
if (empty ( $product_name )) { //如果值为空,输出默认值
$product_name = $product_name_def;
}

$product_price = get_post_meta($post->ID, 'product_price', true);
// 检查这个字段是否有值
if ( empty( $product_price ) ) { //如果值为空,输出默认值
$product_price = $product_price_def;
}

//设置价格比例,未登录用户的价格是已登录的1.2倍,使用 $product_price_vat 变量输出新价格
$vat = 1.2;
$product_price_vat = ($product_price * $vat);

//使用了 update_post_meta 这个函数来将新价格保存为新字段 product_price_vat 的值
$product_price_updated = update_post_meta($post->ID, 'product_price_vat', $product_price_vat);

if (is_user_logged_in()) { //如果是登录用户,显示下面的内容
echo '<strong>'. $product_name .' </strong> 的价格是: <strong>'. $product_price .' </strong>元';
} else { //如果是未登录用户,显示下面的内容
echo '<strong>'. $product_name .' </strong> 的价格是: <strong>'. $product_price_vat .' </strong>元';
}
?>

注意看代码中的注释文字,这里主要讲下里面用到的3个主要函数:get_post_meta() 、  update_post_meta()  和 is_user_logged_in()

get_post_meta($post_id, $key, $single);

此函数有3个基本参数:

$post_id —— 所检索数据的文章的ID,使用 $post->ID 来获取文章的ID。

$key —— 要检索的自定义字段名称

$single —— 这是一个布尔值,如果设置为  true ,将直接以字符串的形式返回字段的值;一个自定义字段可以填写多个值,如果设置为 false,将返回一个数组 array 来显示这多个值。

看上面代码的 第 12 行,就是获取这篇文章的 'product_price'字段的值:

$product_price = get_post_meta($post->ID, 'product_price', true);


update_post_meta($post_id, $meta_key, $meta_value);

此函数的3个基本参数:

$post_id —— 所检索数据的文章的ID,使用 $post->ID 来获取文章的ID

$meta_key —— 你要编辑的自定义字段的名称

$meta_value —— 赋予该自定义字段的值

如上面代码的 29 行,将 $product_price_vat 这个变量作为新字段 product_price_vat 的值:

$product_price_updated = update_post_meta($post->ID, 'product_price_vat', $product_price_vat);

 

 

这里,还使用了 is_user_logged_in() 来判断已登录用户,以便给已登录用户和未登录用户显示不同的内容,如 31-35行代码所示:

if (is_user_logged_in()) { //如果是登录用户,显示下面的内容
echo '<strong>'. $product_name .' </strong> 的价格是: <strong>'. $product_price .' </strong>元';
} else { //如果是未登录用户,显示下面的内容
echo '<strong>'. $product_name .' </strong> 的价格是: <strong>'. $product_price_vat .' </strong>元';
}

再来看看后台,多了一个通过 update_post_meta()  添加的新字段 'product_price_vat',值:120

 

 

 

扩展阅读:http://codex.wordpress.org/Function_Reference/get_post_meta

 

五、使用案例:

1、SEO,不再需要seo插件。

自定义字段的名称里面分别定义keywords和description

调用如下内容:
<?php if ( is_single() ) { ?>
<meta name="keywords"
content="<?php $key="keywords"; echo get_post_meta($post->ID, $key, true);
?>" />
<meta name="description" content="<?php
$key="description"; echo get_post_meta($post->ID, $key, true); ?>"
/>
<?php } ?>

 

2、用自定义字段给Wordpress添加分类主题图片

先在自定义字段里面新建一个字段“topic_img”,值里面就填你做好的图片的地址,然后在WP的主题里调用就可以了。

以下为引用的内容:

<?php if ( get_post_meta($post->ID, 'pre_image', true) ) : ?> <?php $image = get_post_meta($post->ID, 'pre_image', true); ?> <img src="<?php echo $image; ?>" /> <?php else: ?> <img src="<?php bloginfo('template_directory'); ?>/images/blank.jpg" /> <?php endif; ?>

你会看到上面的代码,第5行是定义如果没有输入值的情况下显示的默认图片,你可以自己定义地址。当然你也可以给图片加上width,border,或者定义其他的样式,完全可以按自己的喜欢来做。

 

3、不同的主题日志放不同的广告、图片等。

 

 

六、自定义字段的插件:Advanced Custom Fields  (下载)

Advanced Custom Fields 是一款非常强大的自定义字段插件,允许你自己添加多种形式的自定义字段类型,比如 Image、Checkbox、File、Text、Select、True / False、Link、Textarea 等等,可以集成为一个或多个面板,支持导出字段为 xml 或php代码,还可以集成到主题或插件里。

 

给我留言