更新到WP 4.1后,基于ACF字段查询多个帖子类型的元查询被破坏

时间:2014-12-20 作者:rkoller

几个月来,我一直在使用以下参数进行WP\\U查询:

$args = array(
    \'post_type\' => array( \'posttype1\', \'posttype2\', \'posttype3\', \'posttype4\' ),
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(\'key\' => \'field1_0_subfield\'),
        array(\'key\' => \'field2\'),
        array(\'key\' => \'field3_0_subfield\'),
        array(\'key\' => \'field4\' )
    ),
    \'meta_key\' => \'meta_value\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'ASC\'
);
查询了四种不同的帖子类型(posttype1、posttype2、posttype3、posttype4)。meta\\u查询查询包含日期的ACF(高级自定义字段)字段(字段2、字段4)以及ACF子字段(字段1\\u 0\\u子字段、字段3\\u 0\\u子字段)。因此,这四种帖子类型中的条目是按日期按时间升序排序的。随着Wordpress 4.1的更新,查询停止工作,我不知道原因。

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

arg有问题\'meta_key\' => \'meta_value\' - meta_key 如果您有meta_query arg(不管法典上怎么说)和它在这里的值无论如何都没有意义,所以只需删除它。

然而,它确实指出了4.1中与之前一样的行为变化meta_key 已与meta_query 键(因此您的查询作为meta_key = \'meta_value\' 该条款基本上是一个无操作),但现在它是and,所以失败了。WP 4.0.1:

wp_postmeta.meta_key = \'meta_value\' OR wp_postmeta.meta_key = \'field1_0_subfield\' OR wp_postmeta.meta_key = \'field2\' ...
WP 4.1(mt1是WP\\U Posteta的别名):

wp_postmeta.meta_key = \'meta_value\' AND (mt1.meta_key = \'field1_0_subfield\' OR mt1.meta_key = \'field2\' ...)
(PS查看查询生成的SQL的一种简单方法是$query->request.)

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post