使用分类项目自定义字段 (term_meta) 对 WordPress 分类项目进行排序

文 / @UTHEME

使用WordPress分类项目自定义字段进行排序

今天小本本想和大家分享的是如何使用WordPress的分类项目自定义字段进行排序,这对于一些需要对分类项目进行排序的网站非常实用。在本站之前的文章中,我推荐过WordPress排序插件AnythingOrder,这个插件使用起来很方便,可有时候会和我们使用的其他插件造成冲突。WordPress4.4之前,分类项目排序只支持分类项目自有的字段id、term_id、name、slug等。WordPress4.4为我们带来了分类项目自定义字段term_meta的支持,有了这个数据,我们就可以通过添加分类项目自定义字段来进行排序了。下面是具体的方法。

添加分类项目自定义字段输入表单

首先,我们需要添加一个分类项目自定义字段输入表单,添加后,在编辑分类项目的时候,我们会看到如下图中的分类排序输入字段。根据我们的排序需求,从小到大输入数字就可以了。

term-meta-order
/**
*分类项目排序字段
*
*@param TermObject $term
*@param string $taxonomy
*/
add_action('category_edit_form_fields','term_order_field',10,2);
function term_order_field($term,$taxonomy){
?>

<table class="form-table">
<tbody>
<tr class="form-field">
<th scope="row" valign="top">
<label for="meta-order"><?php _e('排序');?></label>
</th>
<td>
<input type="text" name="_term_order" size="3" style="width:10%;" value="term_id,'_term_order',true);?>"/>
</td>
</tr>
</tbody>
</table>

<?php
}

/**
*保存排序
*
*@param int $term_id
*/
add_action('edited_category','save_term_order');
function save_term_order($term_id){
update_term_meta($term_id,'_term_order',$_POST['_term_order']);
}

调用分类项目时使用自定义字段进行排序

在前段调用分类列表的时候就非常方便了,给term_terms函数传入一个包含自定义字段名称、排序方法为meta_value_num的数组就可以了。

$args=[
'meta_key'=>'_term_order',
'orderby'=>'meta_value_num',
];

$terms=get_terms('category',$args);

如果有需要,我们还可以通过 manage_category_custom_column函数把排序序号在后台的分类列表中显示出来,可以更直观方便的看到分类项目的排序。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。