根据WordPress codex,get_categories()方法为其orderby属性接受以下参数:
**orderby** (string) Sort categories alphabetically or by unique category ID. The default is sort by Category ID. Valid values:
id
name - default
slug
count
term_group
但是,看一下“wp_term_relationships”表中有一个看似未使用的字段叫做“term_order”,对于我创建的每个类别,都设置为0。
是否可以使用term_order字段作为类别的索引排序顺序?
我已将增量值放入此字段中以用于我的类别,并且我尝试将订单传递给具有以下代码的函数,但无济于事:
$cat_args=array(
'hierarchical' => 0,
'orderby' => 'term_order',
);
$categories = get_categories($cat_args);
许多年后,
您可以在functions.php中添加此代码:
function wpcf_filter_terms_order( $orderby, $query_vars, $taxonomies ) {
return $query_vars['orderby'] == 'term_order' ? 'term_order' : $orderby;
}
add_filter( 'get_terms_orderby', 'wpcf_filter_terms_order', 10, 3 );
此代码强制WP在术语查询中使用orderby => term_order参数。
我搜索了所有wordpress函数,你可以使用'term_order'
的唯一一个是wp_get_object_terms,你可以看到它的函数here。
从这一点开始,即使wordpress不使用它来过滤get_categories()
中的类别,您或其他主题/插件开发人员也可以使用上述函数来获取object_terms并通过term_order对它们进行排序/过滤。