Wordpress get_categories() 按“term_order”排序?

jco*_*der 5 php wordpress

根据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
Run Code Online (Sandbox Code Playgroud)

但是,查看“wp_term_relationships”表,有一个看似未使用的字段,称为“term_order”,对于我创建的每个类别,该字段都设置为 0。

是否可以使用 term_order 字段作为类别的索引排序顺序?

我已为我的类别将增量值放入此字段中,但我正在尝试使用以下代码将订单传递给函数,但无济于事:

    $cat_args=array(

        'hierarchical' => 0,

        'orderby' => 'term_order',

        );


        $categories = get_categories($cat_args);
Run Code Online (Sandbox Code Playgroud)

小智 1

许多年后,

您可以在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 );
Run Code Online (Sandbox Code Playgroud)

此代码强制 WP在术语查询中使用orderby => term_order参数。