为WordPress分类、标签、taxonomy添加自己的meta附加字段

为WordPress分类添加meta自定义字段一文中我已经介绍了给分类添加附加字段的方法。延续这个思路,我们可以给分类、标签、其他你自己定义的taxonomy添加自己的meta附加字段。

在你的主题文件夹中找到functions.php,把下面的代码黏贴到末尾

add_action('category_add_form_fields','extra_term_fields'); add_action('edit_category_form_fields','extra_term_fields'); add_action('add_tag_form_fields','extra_term_fields'); add_action('edit_tag_form_fields','extra_term_fields'); add_action('{custom_taxonomy}_add_form_fields','extra_term_fields'); add_action('{custom_taxonomy}_edit_form_fields','extra_term_fields'); function extra_term_fields($term){ ? $metas = array( ??? array('meta_name' => 'APP logo src','meta_key' => 'app_logo'), ??? array('meta_name' => 'iPhone download url','meta_key' => 'iphone_download'), ??? array('meta_name' => 'iPad download url','meta_key' => 'ipad_download') ? ); ? $term_id = $term->term_id; ? foreach($metas as $meta) { ??? $meta_name = $meta['meta_name']; ??? $meta_key = $meta['meta_key']; ??? $meta_value = get_option("term_{$term_id}_meta_{$meta_key}"); ??? ?> <tr class="form-field"> ? <th scope="row" valign="top"><label for="term_<?php echo $meta_key; ?>"><?php echo $meta_name; ?></label></th> ? <td><input type="text" name="term_meta_<?php echo $meta_key; ?>" id="term_<?php echo $meta_key; ?>" class="regular-text" value="<?php echo $meta_value; ?>"></td> </tr> ??? <?php ? } }  add_action('created_category','save_extra_term_fileds'); add_action('edited_category','save_extra_term_fileds'); add_action('created_post_tag','save_extra_term_fileds'); add_action('edited_post_tag','save_extra_term_fileds'); add_action('created_{custom_taxonomy}','save_extra_term_fileds'); add_action('edited_{custom_taxonomy}','save_extra_term_fileds'); function save_extra_term_fileds($term_id){ ? if(!empty($_POST))foreach($_POST as $key => $value){ ??? echo $key; ??? if(strpos($key,'term_meta_') === 0 && trim($value) != '') { ????? $meta_key = str_replace('term_meta_','',$key); ????? $meta_value = trim($value); ????? update_option("term_{$term_id}_meta_{$meta_key}",$meta_value) OR add_option("term_{$term_id}_meta_{$meta_key}",$meta_value); ??? } ? } }  function get_term_meta($term_id,$meta_key){ ? if(is_object($term_id))$term_id = $term_id->term_id; ? $term_meta = get_option("term_{$term_id}_meta_{$meta_key}"); ? if($term_meta){ ??? return $term_meta; ? }else{ ??? return null; ? } }

上面的代码中{custom_taxonomy}是指你自己定义的taxonomy的名称,要替换掉。如果自己没有定义这样的类目,可以把这几行删掉。

红色的$meta是一个二维数组,第二层数组由两个键组成,meta_name是指要出现在后台分类编辑页面中的名称,而meta_key是保存到数据库中的键值。因此这里是你需要自己定义的,要修改为你自己需要的值。

添加分类页面,可以添加新字段

编辑分类页面,可以编辑这些附加字段

最后一个函数get_term_meta是用来获取字段值的,第一个参数是这个类目的id,第二个参数是上面的meta_key。

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录