首页 > 解决方案 > 使用多个“orderby”对 wp_query 进行排序?

问题描述

我正在尝试使用多个“orderby”变量对 wp_query 进行排序。
我的目标是为以下显示提供 2 个 orderby 变量 - 按组排序,然后按评级...

导师 1(第 1 组)(5 颗星)
导师 2(第 1 组)(4 星)
导师 3(第 2 组)( 5 星)
导师 4(第 2 组)(4 星)
导师 5(第 2 组)(3 星)

我尝试了很多东西,包括一个 meta_query 数组,但还没有成功。

这是代码:

if ($_GET['orderby'] == 'ownership') { 
    $query->set('post_type', 'tutor');  
    $query->set('meta_key', 'ownership');
    $query->set('orderby', 'meta_value');
    $query->set('order', 'ASC');
    $query->set('meta_key', 'tutor_plugin_rating'); 
    $query->set('orderby', 'meta_value'); 
    $query->set('order', 'DESC');

简而言之,我还没有弄清楚如何在同一个查询中按“所有权”排序,然后按“tutor_plugin_rating”排序。谁能指导我?

标签: wordpress

解决方案


弄清楚了...

    $meta_query = array(
                      array(
                        'ownership_clause' => array(
                          'key' => 'ownership',
                          'compare' => 'EXISTS'
                        )
                      ),
                      array(
                        'rating_clause' => array(
                          'key' => 'tutor_plugin_rating',
                          'compare' => 'EXISTS'
                        )
                      )
                    );
$query->set('meta_query', $meta_query);
$query->set('orderby', array('ownership_clause' => 'ASC', 'rating_clause' => 'DESC'));

推荐阅读