META_QUERY‘Compare’=>‘IN’不起作用

时间:2015-04-03 作者:Rizwan

首先,我知道这是重复的,但以前的答案都没有帮助。

我正在通过post_meta. 这是我的代码,目前没有返回任何内容。

$args   =   array(
    \'numberposts\'   => -1,
    \'post_type\'     => \'post\',
    \'meta_query\'    => array(
        array(
            \'key\'       => \'system_power_supply\',
            \'value\'     => array(\'single\', \'redundant\'),
            \'compare\'   => \'IN\',
        )
    )

);

$query = new WP_Query($args);
echo $query->found_posts;
如果我删除meta_query 它起作用了。我确信这些事情:

中没有拼写错误key 或者value.postis “system\\u power\\u supply”中值为“single”的post。但是,post字段是由Advanced Custom Fields.

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

在元查询中搜索序列化值没有简单的方法。如果值列表不是很长,那么您可以设置多个元查询:

\'meta_query\'    => array(
    \'relation\' => \'OR\',
    array(
        \'key\'       => \'system_power_supply\',
        \'value\'     => \'single\',
        \'compare\'   => \'LIKE\',
    ),
    array(
        \'key\'       => \'system_power_supply\',
        \'value\'     => \'redundant\',
        \'compare\'   => \'LIKE\',
    )
)
或者,如果您想获得超凡魅力,可以动态设置:

$values_to_search = array(\'single\', \'redundant\');
$meta_query = array(\'relation\' => \'OR\');
foreach ($values_to_search as $value) {
    $meta_query[] = array(
        \'key\'       => \'system_power_supply\',
        \'value\'     => $value,
        \'compare\'   => \'LIKE\',
    );
}

SO网友:Badr

我知道这已经有很长时间了,但以防有人有同样的问题。在我发现问题之前,我已经花了好几个小时的时间胡思乱想:“meta\\u query”和“IN”比较运算符似乎不接受通常的数组。相反,您需要先用“,”连接它。

因此,在您的情况下,类似这样的方法应该有效:

$args   =   array(
\'posts_per_page\'   => -1,
\'post_type\'     => \'post\',
\'meta_query\'    => array(
    array(
        \'key\'       => \'system_power_supply\',
        \'value\'     => join(\', \', array(\'single\', \'redundant\')),
        \'compare\'   => \'IN\',
    )
)
);
$query = new WP_Query($args);
echo $query->found_posts;

结束

相关推荐

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

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