首页 > CMS应用 > 正文
WordPress添加自定义字段面板

通常情况下,我们在使用wordpress的自定义字段功能是,都是需要手动选择字段值,实际操作的时候显得有些麻烦,这里的话分享一个在文章发布页面添加自定义字段面板的方法,最终效果如图,以添加文章关键词以及关键词描述为例子,具体应用,还可以自行拓展,这样再操作起来的话,就简单方便得多了。

add-panel

第一步:创建新的自定义字段,将以下代码添加到当前主题的文件中

//创建自定义字段
$new_meta_boxes =
array(
  "description" => array(
    "name" => "_description",
    "std" => "这里填默认的网页描述",
    "title" => "网页描述:"),

  "keywords" => array(
    "name" => "_keywords",
    "std" => "这里填默认的网页关键字",
    "title" => "关键字:")
);
//创建自定义字段输入框
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="ludou_metaboxes_nonce" id="ludou_metaboxes_nonce" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
}
//创建自定义字段模块
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' );
  }
}
//保存文章数据
function save_postdata( $post_id ) {
  global $new_meta_boxes;
   
  if ( !wp_verify_nonce( $_POST['ludou_metaboxes_nonce'], 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($data == "")
      delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
    else
      update_post_meta($post_id, $meta_box['name'].'_value', $data);
   }
}
//将函数连接到指定action
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata');

第二步:主题模版调用

<?php
if (is_single()) {
  // 自定义字段名称为 description_value
  $description = get_post_meta($post->ID, "_description_value", true);

  // 自定义字段名称为 keywords_value
  $keywords = get_post_meta($post->ID, "_keywords_value", true);

  // 去除不必要的空格和HTML标签
  $description = trim(strip_tags($description));
  $keywords = trim(strip_tags($keywords));

  echo '<meta name="description" content="'.$description.'" />
<meta name="keywords" content="'.$keywords.'" />';
}

?>

原文地址:http://www.ludou.org/creating-custom-write-panels-in-wordpress.html

文章评论

共有 3 条评论

  1. 雅芙

    我来看看!谢谢

  2. 雅芙

    帮你顶,人还是厚道点好

  3. 雅芙

    很好!很强大!

Top