wordpress博客的自定义栏目使用非常泛,没有使用过自定义栏目的博友可以看看《WordPress 自定义字段 自定义域的使用方法》。主题制作中往往会使用WP自定义字段实现一些功能,特别是在wordpress淘宝客模板中的使用,产品的价格、链接都可以通过自定义栏目使用。默认的自定义字段使用方法是下拉菜单形式,对于经常使用的字段,每次都要下拉选择显然非常不方便,因此给WP主题添加自定义栏目面板显得非常有必要。下面通过在主题的functions.php文件中添加代码实现该功能。
一、创建需要的字段信息:
以添加description_value和keywords_value两个字段为例,先定义数组:
1 2 3 4 5 6 7 8 9 10 11 12 |
$new_meta_boxes = array( "description" => array( "name" => "description", "std" => "这里填默认的网页描述", "title" => "网页描述:"), "keywords" => array( "name" => "keywords", "std" => "这里填默认的网页关键字", "title" => "关键字:") ); |
二、创建自定义字段输入框
以下代码将用于创建自定义域以及输入框:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function new_meta_boxes() { global $post, $new_meta_boxes; foreach($new_meta_boxes as $meta_box) { $meta_box_value = get_post_meta($post->ID, $meta_box['name'].'_value', true); if($meta_box_value == "") $meta_box_value = $meta_box['std']; // 自定义字段标题 echo'<h4>'.$meta_box['title'].'</h4>'; // 自定义字段输入框 echo '<textarea cols="60" rows="3" name="'.$meta_box['name'].'_value">'.$meta_box_value.'</textarea><br />'; } echo '<input type="hidden" name="newmetaboxes_noncename" id="newmetaboxes_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; } |
三、创建自定义字段模块
下面代码将在文章编辑页添加自定义字段模块,这其中这用了WordPress的添加模块函数add_meta_box:
1 2 3 4 5 6 7 |
function create_meta_box() { global $theme_name; if ( function_exists('add_meta_box') ) { add_meta_box( 'new-meta-boxes', '自定义模块', 'new_meta_boxes', 'post', 'normal', 'high' ); } } |
四、保存文章数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function save_postdata( $post_id ) { global $new_meta_boxes; if ( !wp_verify_nonce( $_POST['newmetaboxes_noncename'], plugin_basename(__FILE__) )) return; if ( !current_user_can( 'edit_posts', $post_id )) return; foreach($new_meta_boxes as $meta_box) { $data = $_POST[$meta_box['name'].'_value']; if(get_post_meta($post_id, $meta_box['name'].'_value') == "") add_post_meta($post_id, $meta_box['name'].'_value', $data, true); elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true)) update_post_meta($post_id, $meta_box['name'].'_value', $data); elseif($data == "") delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true)); } } |
五、将函数连接到指定action(动作)
将函数连接到指定action(动作),以让WordPress程序执行我们之前编写的函数:
1 2 |
add_action('admin_menu', 'create_meta_box'); add_action('save_post', 'save_postdata'); |
最后在主题模板中添加创建的自定义字段即可
六、调用自定义字段的值
示例:调用前面创建的“网页描述”
1 |
<?php $description = get_post_custom_values("description_value"); echo $description[0];?> |
代码来自露兜博客
发表回复