Loading
0

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

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

比如我们希望某个分类下的文章的SEO标题不显示站名,这个是什么意思呢?一般来说,文章的标题组成为Post title - Sitename,我们需要某些分类的文章的标题只有Post title,可以用模-板-兔写的以下方法来实现。

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

add_action('category_add_form_fields','erphp_ct_add_category_field',20,2); 
function erphp_ct_add_category_field(){ 
echo '<div class="form-field">
<label for="erphp_cat_title">标题去站名</label>
<select name="erphp_cat_title" id="erphp_cat_title" class="postform">
<option value="0">关闭</option>
<option value="1">开启</option>
</select>
<p class="description">分类下的文章标题里不带网站名</p>
</div>';
}

add_action('category_edit_form_fields','erphp_ct_edit_category_field',20,2); 
function erphp_ct_edit_category_field($tag){ 
$erphp_cat_title = get_term_meta($tag->term_id,'erphp_cat_title',true);
echo '<tr class="form-field">
<th scope="row">
<label for="erphp_cat_title">标题去站名</label>
<td>
<select name="erphp_cat_title" id="erphp_cat_title" class="postform">
<option value="0" '. ('0'==$erphp_cat_title?'selected="selected"':'') .'>关闭</option>
<option value="1" '. ('1'==$erphp_cat_title?'selected="selected"':'') .'>开启</option>
</select>
<p class="description">分类下的文章标题里不带网站名</p>
</td>
</th>
</tr>';
}

add_action('created_category','erphp_ct_category_field_edited',20,1); 
add_action('edited_category','erphp_ct_category_field_edited',20,1); 
function erphp_ct_category_field_edited($term_id){
update_term_meta($term_id,'erphp_cat_title',$_POST['erphp_cat_title']);
}

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

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

function erphp_ct_wp_title( $title, $sep ) {
if(is_single()){
$erphp_ct = 0;
$categories = get_the_category();
if($categories) {
foreach($categories as $cat){
$erphp_cat_title = get_term_meta($cat->term_id,'erphp_cat_title',true);
if($erphp_cat_title){
$erphp_ct = 1;
break;
}
}
}
if($erphp_ct){
$title = get_the_title();
}
}
return $title;
}
add_filter( 'wp_title', 'erphp_ct_wp_title', 100, 2 );

一般只要主题写的规范的,上面代码的功能都会生效的,且不会对主题本身的wp_title钩子有影响~

WordPress如何给分类与标签添加自定义字段的教程,MOBANTU就讲到这了。

特别声明:1、本站仅提供源码学习下载,使用者需具备一定的技术基础,源码费用仅为站长辛苦整理费,不代表源码自身价值也不包含任何服务,如需完美运营请到官方购买。如需搭建、二开、bug修复等服务需额外收费,如果源码侵犯了您的利益请联系客服处理! 2、用户必须遵守《计算机软件保护条例(2013修订)》第十七条:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。鉴于此条例,用户从本平台下载的全部源码(软件)仅限学习研究,未经版权归属者授权不得商用,若因商用引起的版权纠纷,一切责任均由使用者自行承担,本平台所属公司及其雇员不承担任何法律责任。本站邮箱:weituiw@qq.com