如何使用两个acf字段执行wp_Query,并对其中一个进行排序

时间:2016-04-06 作者:erolha

我有两个高级自定义字段,脚注和编辑日期(日期选择器字段)。我想要实现的是wp_query 其中脚注不为空。我希望根据编辑的日期对输出进行排序。

我尝试了多种解决方案,但都无法解决这个问题。

这是我最好的尝试:

$args = array(
    \'post_type\' => \'page\',
    \'meta_query\' => array(
        \'relation\'      => \'AND\',
        array(
            \'key\' => \'footnote\',
            \'value\'   => array(\'\'),
            \'compare\' => \'NOT LIKE\'
        ),
        array(
            \'key\' => \'date_edited\',
            \'value\'   => array(\'\'),
            \'type\' => \'DATE\',   
            \'compare\' => \'=\'                                        
            \'orderby\' => \'meta_value_num\',
            \'order\' => \'DESC\'
        )
    ),
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 10,
    \'no_found_rows\' => true
);
显然,这是行不通的-而且是date\\u编辑的数组不正确。是否有人看到我的错误,并有正确的解决方案来显示?

EDIT after @majick responded

这是可行的。是对@majick建议的一个小小修改:

$args = array(
    \'post_type\' => \'page\',
    \'meta_query\' => array(
        array(
            \'key\' => \'footnote\',
            \'compare\' => \'EXISTS\',
        ),
    ),
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 10,
    \'no_found_rows\' => true,
    \'orderby\' => \'meta_value_num\',
    \'meta_key\' => \'date_edited\',
    \'order\' => \'DESC\'
);

1 个回复
最合适的回答,由SO网友:majick 整理而成

您只是混淆了数组级别,排序不是在meta\\u查询级别内完成的,而是在主查询级别上完成的。这是两类之间的区别:

https://codex.wordpress.org/Class_Reference/WP_Queryhttps://codex.wordpress.org/Class_Reference/WP_Meta_Query

此外,正如meta query codex所说:“只有当比较是‘IN’、‘NOT IN’、‘BETWEEN’或‘NOT BETWEEN’时,自定义字段值才能是数组…”。。。我想你真的只需要不等于这里来检查脚注值设置。。。我认为您不需要检查date\\u edited是否存在,因此您有一个更简单的查询:

$args = array(
    \'post_type\' => \'page\',
    \'meta_query\' => array(
        \'key\' => \'footnote\',
        \'value\'   => \'\',
        \'compare\' => \'NOT EQUALS\'
    ),
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 10,
    \'no_found_rows\' => true,
    \'orderby\' => \'meta_value_num\',
    \'meta_key\' => \'date_edited\',
    \'order\' => \'DESC\'
);
希望这有帮助。。。你的发烧已经退了吗?:-)