如果我使用get_posts()
就像这样,我得到了很多结果,值为1my_key
meta\\u键:
$posts = get_posts(
array(
\'post_type\' => \'attachment\',
\'meta_key\' => \'my_key\',
\'meta_value\' => \'1\'
)
);
//this has a bunch of results as expected
print_r($posts);
但是,如果使用WP\\u query创建类似的查询,则会得到一个空的结果数组
$args = array(
\'post_type\' => \'attachment\',
\'meta_query\' => array(
array(
\'key\' => \'my_key\',
\'value\' => \'1\',
\'compare\' => \'=\',
\'type\' => \'BINARY\'
)
)
);
$query = new WP_Query();
$results = $query->query($args);
//this is empty
print_r($results);
我尝试了几种meta\\u查询数组,但都没有成功。我想这可能是一个bug,但我想先确保我没有遗漏什么。
最合适的回答,由SO网友:EAMann 整理而成
首先,只需将参数传递给WP_Query
因为这既干净又符合Codex documentation of the class.
您应该构建如下内容:
$my_key_query_args = array(
\'post_type\' => \'attachment\',
\'post_status\' => \'inherit\',
\'meta_query\' => array(
array(
\'key\' => \'my_key\',
\'value\' => \'1\',
\'compare\' => \'=\',
\'type\' => \'BINARY\'
)
)
);
$my_key_query = new WP_Query( $my_key_query_args );
第二,注意添加的
post_status
数组的参数。默认情况下,添加的附件的发布状态为“继承”,但
WP_Query
将查找状态为“已发布”、“草稿”或“待定”的帖子(请参见
documentation 以及该参数)。
所以这里没有bug,我们只是忘记检查传递给对象的所有参数的默认值。
在“附件”选项上有一个注释post_type
调用此要求的参数:
默认WP\\U查询集\'post_status\'=>\'published\'
, 但附件默认为\'post_status\'=>\'inherit\'
因此,您需要将状态设置为\'inherit\'
或\'any\'
.