Wordpress 按元键问题获取_类别订单?

Wordpress 按元键问题获取_类别订单?,wordpress,Wordpress,我正试图寻找一种通过元值对类别进行排序的方法。从我所读到的,我似乎可以使用: 获取类别('child_of=92&hide_empty=false&orderby=meta_value&meta_key=date&order=ASC') 但是,这根本不起作用,类别仍然不是我想要的顺序。我想知道我怎样才能: 纠正此错误以使其正常工作 打印出sql,看看里面到底发生了什么 非常感谢您。首先,我必须提到,我正在使用模块自定义类别字段,其次,我是一个完全的WP新手 无论如何,在了解到这在默认情况下是无法

我正试图寻找一种通过元值对类别进行排序的方法。从我所读到的,我似乎可以使用:

获取类别('child_of=92&hide_empty=false&orderby=meta_value&meta_key=date&order=ASC')

但是,这根本不起作用,类别仍然不是我想要的顺序。我想知道我怎样才能:

  • 纠正此错误以使其正常工作
  • 打印出sql,看看里面到底发生了什么

  • 非常感谢您。

    首先,我必须提到,我正在使用模块自定义类别字段,其次,我是一个完全的WP新手

    无论如何,在了解到这在默认情况下是无法完成的之后,我研究了get_categories函数并最终提出了一个解决方案

    function category_custom_field_get_terms_orderby( $orderby, $args ){
        if($args['orderby'] == 'category_custom_field' && isset($args['category_custom_field'])) 
            return 'cv.field_value';
        return $orderby;
    }
    
    function category_custom_field_get_terms_fields( $selects, $args ){
        if($args['orderby'] == 'category_custom_field' && isset($args['category_custom_field']))
            $selects[] = 'cv.*';
        return $selects;
    }
    
    function category_custom_field_terms_clauses($pieces, $taxonomies, $args){
        global $wpdb;
        if($args['orderby'] == 'category_custom_field' && isset($args['category_custom_field']))
            $pieces['join'] .= " LEFT JOIN $wpdb->prefix" . "ccf_Value cv ON cv.term_id = tt.term_id AND cv.field_name = '".$args['category_custom_field']."'";
        return $pieces;
    }    
    
    add_filter('get_terms_orderby', 'category_custom_field_get_terms_orderby',1,2);
    
    add_filter('get_terms_fields', 'category_custom_field_get_terms_fields',1,2);
    
    add_filter('terms_clauses', 'category_custom_field_terms_clauses',1,3);
    
    (上面的代码可以放在theme functions.php文件中)

    那么获取类别的代码是:

    get_categories('child_of=92&hide_empty=false&orderby=category_custom_field&category_custom_field=date&order=DESC');
    

    任何更正都将不胜感激

    您还可以使用
    usort
    为get\u类别提供新的元和排序

    $subcategories = get_categories();
    
    foreach ($subcategories as $subcategory) {
    $subcategory->your_meta_key = your_meta_value;
    }
    
    foreach ($subcategories as $subcategory) {
    blah blah blah
    }
    
    function my_cmp($a, $b) {
    if ($a->ordering == $b->ordering) {
    return 0;
    }
    return ($a->ordering < $b->ordering) ? -1 : 1;
    }
    
    
    usort($subcategories, "my_cmp");
    
    $subcategories=get_categories();
    foreach($子类别作为$子类别){
    $subcategory->your\u meta\u key=your\u meta\u值;
    }
    foreach($子类别作为$子类别){
    废话废话
    }
    函数my_cmp($a,$b){
    如果($a->订购==$b->订购){
    返回0;
    }
    返回($a->订购<$b->订购)?-1:1;
    }
    usort($subcategories,“my_cmp”);
    
    oops,我没有注意到该站点正在使用插件:Category自定义字段(向任何Category/taxonomy添加无限自定义字段)。我需要检查更多细节,然后使用过滤器将插件的扩展功能与默认值合并。虽然我自己从未使用过类别自定义字段,但所有内容在语法上都是正确的和最优的。