提交时将值设置为自定义字段

时间:2014-06-04 作者:user1825932

在wordpress中提交帖子时,是否可以将自动值设置为自定义字段?

当我发表文章时,我需要这个自定义字段自动获取文章标题的第一个字母。

示例:如果我的标题为“示例”,则自定义字段值为“E”。

1 个回复
最合适的回答,由SO网友:Cyclonecode 整理而成

是的,这是可能的。如果要通过元框添加自定义字段,可以执行以下操作:

// add action to create your custom field
add_action( \'add_meta_boxes\', \'create_meta_box\'  );
// add a callback that will be called when saving the post
add_filter( \'save_post\', \'save_meta_box\', 10, 2 );

// function that will create a meta box
function create_meta_box() {
   add_meta_box(\'sample_meta_box\', __(\'Sample Box\'), \'display_meta_box\');     
}

// function that will display the actual meta box
function display_meta_box($post, $metabox) {
  ?>
   <input name="sample" type="text" id="sample" value="<?php echo get_post_meta($post->ID, \'sample\', true); ?>">
  <?php
}

// function that will be called when the post is saved
function save_meta_box($post_id, $post) {
   // default value for the field
   $value = $_POST[\'post_title\'][0];
   // only use the default value if user haven\'t specified one
   if(!empty($_POST[\'sample\'])) {
      $value = $_POST[\'sample\'];
   }
   // update the meta data for the post
   update_post_meta($post_id, \'sample\', $value);
}
当然你必须改变sample 在本例中,是指元数据字段的名称。

如果已经通过管理界面创建了自定义字段,则可以执行以下操作:

// add a callback that will be called when saving the post
add_filter( \'save_post\', \'save_custom_field\', 10, 2 ); 

// called when updating a post
function save_custom_field($post_id, $post) {
   // loop through the meta data
   if(isset($_POST[\'meta\'])) {
     foreach($_POST[\'meta\'] as $key => $value) {
        // check if it\'s the correct field
        if($value[\'key\'] == \'sample\') {
           // this will always set the custom field to the first letter in the title
           update_post_meta($post_id, \'sample\', $_POST[\'post_title\'][0]);
           break;
        }
     }
   }
}
就像在第一个示例中一样,您必须更改sample 自定义字段的名称。

结束

相关推荐

Anonymous Postings

这是关于stackoverflow的一个问题的复述,已提交到此网站:我的客户想在他的新WP网站上创建一个表单,填写并提交后将提交给他的管理帖子队列进行审批,如果他批准,则会在他的网站上的“博客”(实际上是一堆吉他般的标签)中发布。表单将是自定义的,并具有自定义字段。下面是表单,但在我刷新之前是旧设计的。那么,这有多难呢?他不希望它出现在我开始做的WP管理面板中,而是出现在像/贡献这样的页面中