通过多个 ACF 字段查询和排序

Query and Orderby multiple ACF Fields

我有一个名为 "property" 的自定义 post 类型。

每个 属性 都有一个名为 "property_status" 的 ACF 复选框字段,其中包含以下选项:

租金:出租

已租 : 已租

出售:待售

已售出:已售出房屋

新:建设中

每个 属性 还有一个名为 "property_featured" 的精选列表 ACF 单选按钮字段,其中包含以下选项:

否:否

是:是

我已使用以下代码成功查询 post 以显示:

$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
    'post_type' => 'property',
    'posts_per_page' => 12,
    'meta_key' => 'property_status',
    'orderby'    => array(
        'property_featured' => 'ASC',
        'property_status' => 'ASC'
    ),
    'order' => 'ASC',
    'paged' => $paged
    );
$wp_query = new WP_Query( $args );

我需要通过单选按钮选择 "yes : Yes" 调用特色属性来订购我的 posts,然后通过以下方式在 "properties" 下显示其他 posts他们 'property_status' 的租金,租金和新房,销售,然后是销售和新房。某些属性可以在 "property_status" 字段中选中 2 个复选框,例如 属性 用于出租,但这就是全部 "new" 正在建设中。

我尝试了几种不同的查询声明来尝试按我需要的顺序显示这些自定义 post,但没有任何成功。上面的代码是我正在使用的。

WP_Query documentation中所述,如果您希望通过两个不同的postmeta 来订购(例如,先property_featured,然后property_status 第二),您需要使用“命名元查询”将您的元查询组合并 link 到您的 orderby 数组。

以下是您修改的代码:

$args = array(
    'post_type'      => 'property',
    'posts_per_page' => 12,
    'paged'          => $paged,

    'meta_query'     => array(
        'relation' => 'AND',
        'featured_clause' => array(
            'key' => 'property_featured',
            'compare' => 'EXISTS'
        ),
        'status_clause' => array(
            'key' => 'property_status',
            'compare' => 'EXISTS'
        )
    ),

    'orderby'    => array(
        'featured_clause' => 'ASC',
        'status_clause' => 'ASC'
    )

);