几个月来,我一直在使用以下参数进行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的更新,查询停止工作,我不知道原因。
最合适的回答,由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
.)