元查询关系“”OR“”未按预期工作

时间:2014-01-17 作者:Djave

我有以下疑问,$the_query = new WP_Query( $args );, 它应该显示H\\u property\\u类型的任何属性bandb, hotel dining.

如果我打印$args,我会得到以下结果,我希望效果很好:

Array(
[post_type] => property
[posts_per_page] => -1
[orderby] => H_featured
[order] => DESC
[meta_query] => Array
    (
        [relation] => OR
        [0] => Array
            (
                [key] => H_property_type
                [value] => bandb
                [compare] => on
            )

        [1] => Array
            (
                [key] => H_property_type
                [value] => hotel
                [compare] => on
            )

        [2] => Array
            (
                [key] => H_property_type
                [value] => dining
                [compare] => on
            )
    )
)
但出于某种原因,此技术仅检索其中一个复选框的结果,即它们都具有H\\U property\\U类型的酒店。

我做错了什么?

我的参数是使用以下代码设置的:

if(isset($_GET[\'H_property_type\'])){
    if(count($_GET[\'H_property_type\']) > 1){
        $args[\'meta_query\'][\'relation\'] = \'OR\';
    }
    foreach ($_GET[\'H_property_type\'] as $type) {
        $args[\'meta_query\'][] = array(
            \'key\' => \'H_property_type\',
            \'value\' => $type,
            \'compare\' => \'on\'
        );
    }
}

1 个回复
SO网友:Shazzad

你很可能正在寻找这个。注意:元查询支持比较方法what is‘IN’,它表示任何值。像这样-

if( isset($_GET[\'H_property_type\']) ){
    // you don\'t need relation for this
    // if(count($_GET[\'H_property_type\']) > 1){
    //    $args[\'meta_query\'][\'relation\'] = \'OR\';
    // }
    // if $_GET[\'H_property_type\'] is an array
    // foreach ($_GET[\'H_property_type\'] as $type) {
    if( isset($_GET[\'H_property_type\']) && is_array($_GET[\'H_property_type\']) ){
        $args[\'meta_query\'] = array(
            \'key\' => \'H_property_type\',
            \'value\' => array_map( \'trim\', $_GET[\'H_property_type\'] ),
            \'compare\' => \'IN\'
        );
    }
    // }
}
查询不需要注释代码。谢谢

结束

相关推荐

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

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