查询和订购多个ACF字段

时间:2017-05-03 19:35:17

标签: wordpress advanced-custom-fields

我有一个名为“property”的自定义帖子类型。

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

租金:出租

租借:租用

促销:待售

已售出:已售出房屋

new:正在建设中

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

否:否

是的:是的

我已成功使用以下代码查询帖子:

$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 );

我需要通过选择“是:是”的单选按钮来调用特色属性来订购我的帖子,然后通过他们的'property_status'显示租赁,租赁和新的销售的“属性”下的其他帖子,然后销售和新的。某些属性可以在“property_status”字段中选中2个复选框,例如租用属性,但这都是正在构建的“新”。

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

1 个答案:

答案 0 :(得分:0)

WP_Query documentation中所述,如果您希望按两个不同的帖子排序(例如, property_featured 首先和 property_status 秒),需要使用“命名元查询”将元查询与您的订单数组合并链接。

以下是您修改的代码:

$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'
    )

);