Wordpress get_categories()按“term_order”排序?

问题描述 投票:4回答:2

根据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);
php wordpress
2个回答
2
投票

许多年后,

您可以在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参数。


0
投票

我搜索了所有wordpress函数,你可以使用'term_order'的唯一一个是wp_get_object_terms,你可以看到它的函数here。 从这一点开始,即使wordpress不使用它来过滤get_categories()中的类别,您或其他主题/插件开发人员也可以使用上述函数来获取object_terms并通过term_order对它们进行排序/过滤。

© www.soinside.com 2019 - 2024. All rights reserved.