在@Krzysiek Dródż的帮助下,我找到了这个问题的解决方案。我的第一个问题是,我将$meta\\u数组嵌套在另一个数组中。
根据@Krzysiek的建议,我更改了这一行
\'meta_query\' => array($meta_array)
至
\'meta_query\' => $meta_array
。这允许元数组保持WP\\u查询对象的正确语法。我解决的最后一个问题是,在具有多个值的元查询中,必须定义值之间的关系。比如说
\'meta_query\' => array(
array (
\'key\' => \'relate_blog_posts\',
\'value\' => \'155\',
\'compare\' => \'LIKE\'
),
array (
\'key\' => \'relate_blog_posts\',
\'value\' => \'156\',
\'compare\' => \'LIKE\'
)
)
不会返回任何值,而以下值将:
\'meta_query\' => array(
\'relation\' => \'OR\',
array (
\'key\' => \'relate_blog_posts\',
\'value\' => \'155\',
\'compare\' => \'LIKE\'
),
array (
\'key\' => \'relate_blog_posts\',
\'value\' => \'156\',
\'compare\' => \'LIKE\'
),
)
因此,通过最初定义$meta\\u array以包含“relation”属性,最终的数组使用了正确的语法,并且查询工作正常。最终工作代码:
$post_ids_array = array( "12", "24" ); //this array will be dynamically generated
$meta_array = array(\'relation\'=>\'OR\');
foreach ($post_ids_array as $key => $value) {
array_push($meta_array,
array(
\'key\' => \'relate_blog_posts\',
\'value\' => $value,
\'compare\' => \'LIKE\'
)
);
}
$post_args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => 3,
\'post_status\' => \'publish\',
\'meta_query\' => $meta_array
);
$post_query = new WP_Query($post_args);