WordPress教程

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

也想出现在这里?联系我们
创客云

我们在开发 wordpress 主题的过程中一般会对分类进行一些其他字段的设置来完成一些可控性的功能,需要给分类设置自定义字段。比如我们希望某个分类下的文章的 SEO 标题不显示站名,这个是什么意思呢?一般来说,文章的标题组成为 Post title - Sitename,我们需要某些分类的文章的标题只有 Post title,可以用模-板-兔写的以下方法来实现。

首先我们给分类添加一个字段来控制是否启用上面说的那个功能。

也想出现在这里?联系我们
创客主机
  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 钩子有影响。

服务范围 1、专业提供WordPress主题、插件汉化、优化、PHP环境配置等服务请详询在线客服
2、本站承接 WordPress、DedeCMS、ThinkPHP 等系统建站、仿站、开发、定制等服务
3、英文模板(主题)安装费用为120元/次,汉化主题首次免费安装(二次安装30元/次)
售后时间 周一至周五(法定节假日除外) 10:00-22:00
(0)

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

热评文章

发表评论

热销模板

Nastik - 创意企业作品展示网站WordPress汉化模板

Envato

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

8

8年专注高端建站

秋季到冬季,是一个季节的距离:

①、感恩回馈云模板VIP会员限时 6 折 ---》充值VIP

②、买模板送等值主机(高速、稳定、免备案)活动火热进行中 ---》云模板

咨 询 客 服