WordPress 给分类与标签添加自定义字段

创客云

我们在开发WordPress主题的过程中一般会对分类进行一些其他字段的设置来完成一些可控性的功能,需要给分类设置自定义字段。

比如我们希望某个分类下的文章的SEO标题不显示站名,这个是什么意思呢?一般来说,文章的标题组成为 文章标题 - 网站名称,我们需要某些分类的文章的标题只有 文章标题 ,可以用以下方法来实现。首先我们给分类添加一个字段来控制是否启用上面说的那个功能。

  1. add_action('category_add_form_fields','erphp_ct_add_category_field',20,2); 
  2. function erphp_ct_add_category_field(){ 
  3. echo '<div class="form-field">
  4. <label for="erphp_cat_title">标题去站名</label>
  5. <select name="erphp_cat_title" id="erphp_cat_title" class="postform">
  6. <option value="0">关闭</option>
  7. <option value="1">开启</option>
  8. </select>
  9. <p class="description">分类下的文章标题里不带网站名</p>
  10. </div>';
  11. }
  12.  
  13. add_action('category_edit_form_fields','erphp_ct_edit_category_field',20,2); 
  14. function erphp_ct_edit_category_field($tag){ 
  15. $erphp_cat_title = get_term_meta($tag->term_id,'erphp_cat_title',true);
  16. echo '<tr class="form-field">
  17. <th scope="row">
  18. <label for="erphp_cat_title">标题去站名</label>
  19. <td>
  20. <select name="erphp_cat_title" id="erphp_cat_title" class="postform">
  21. <option value="0" '. ('0'==$erphp_cat_title?'selected="selected"':'') .'>关闭</option>
  22. <option value="1" '. ('1'==$erphp_cat_title?'selected="selected"':'') .'>开启</option>
  23. </select>
  24. <p class="description">分类下的文章标题里不带网站名</p>
  25. </td>
  26. </th>
  27. </tr>';
  28. }
  29.  
  30. add_action('created_category','erphp_ct_category_field_edited',20,1); 
  31. add_action('edited_category','erphp_ct_category_field_edited',20,1); 
  32. function erphp_ct_category_field_edited($term_id){
  33. update_term_meta($term_id,'erphp_cat_title',$_POST['erphp_cat_title']);
  34. }

上面的代码就是给分类添加了一个【标题去站名】的设置选项,用到了category_add_form_fields、category_edit_form_fields、created_category、edited_category这4个钩子来分别实现添加、编辑、保存时处理这个自定义字段,具体这4个钩子的用法这里就不多讲了。

然后,我们利用wp_title这个钩子来实现文章SEO标题的显示。

  1. function erphp_ct_wp_title( $title, $sep ) {
  2. if(is_single()){
  3. $erphp_ct = 0;
  4. $categories = get_the_category();
  5. if($categories) {
  6. foreach($categories as $cat){
  7. $erphp_cat_title = get_term_meta($cat->term_id,'erphp_cat_title',true);
  8. if($erphp_cat_title){
  9. $erphp_ct = 1;
  10. break;
  11. }
  12. }
  13. }
  14. if($erphp_ct){
  15. $title = get_the_title();
  16. }
  17. }
  18. return $title;
  19. }
  20. add_filter( 'wp_title', 'erphp_ct_wp_title', 100, 2 );

通常只要主题写的规范的,上面代码的功能都会生效的,且不会对主题本身的wp_title钩子有影响,WordPress如何给分类与标签添加自定义字段的教程就讲到这了。

本文由 CityMall 整理发布如需转载,请注明出处:https://www.22vd.com/61407.html
云模板

发表评论

热销模板

高端信息技术产品展示DedeCMS织梦中英文模板

Envato

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!