一个查询中的多个关系

时间:2013-07-07 作者:Guiloviu

我正在研究一个WP\\U查询,我发现了一个问题。

我在tickets中有自定义字段,希望进行一个WP\\u查询来显示这一点(举个例子):

(field1 = “data1″ AND field2 = “data2″) OR (field1 = “data2″ AND field2 = “data1″)
为此,我创建了这个查询,但它返回的结果很好。

\'meta_query\' => array (
    \'relation\' => \'AND\',
    array (
        \'key\'     => \'field1\',
        \'value\'   => \'data1\',
        \'compare\' => \'=\'
    ),
    array (
        \'key\'     => \'field2\',
        \'value\'   => \'data2\',
        \'compare\' => \'=\'
    ),

    \'relation\' => \'OR\',
    array (
        \'relation\' => \'AND\',
        array (
            array (
                \'key\'     => \'field1\',
                \'value\'   => \'data2\',
                \'compare\' => \'=\'
            ),
            array (
                \'key\'     => \'field2\',
                \'value\'   => \'data1\',
                \'compare\' => \'=\'
            ),
        ),
    ),
)
有人知道我错了吗?我尝试了不同的方法,但什么都没有(我之所以这样说,是因为我认为这是最接近的方法。

问候和感谢!

对不起我的英语!(谷歌翻译)

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

不幸的是,元查询不支持AND &;OR. 但是您可以做的是进行两个查询,每个规则一个查询,然后合并结果。

$group_1 = get_posts(
    array(
        \'posts_per_page\' => -1,
        \'fields\'         => \'ids\',
        \'meta_query\'     => array (
            array (
                \'key\'   => \'field1\',
                \'value\' => \'data1\',
            ),
            array (
                \'key\'   => \'field2\',
                \'value\' => \'data2\',
            ),
        ),
    )
);

$group_2 = get_posts(
    array(
        \'posts_per_page\' => -1,
        \'fields\'         => \'ids\',
        \'meta_query\'     => array (
            array (
                \'key\'   => \'field1\',
                \'value\' => \'data2\',
            ),
            array (
                \'key\'   => \'field2\',
                \'value\' => \'data1\',
            ),
        ),
    )
);

$query = new WP_Query(
    array(
        \'post__in\' => array_merge( $group_1, $group_2 ),
    )
);

SO网友:kaiser

使用posts_clauses 对此进行筛选。只需根据需要更改其中的阵列部分。

SO网友:Eric Holmes

您仍然可以在WP\\u查询delcaration中执行此操作。使用compare 的值IN 并向该值传递一个可能值的数组。

$my_query = new WP_Query( array(
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'key\' => \'field1\',
            \'value\' => array(\'data1\', data2\'),
            \'compare\' => \'IN\'
        ),
        array(
            \'key\' => \'field2\',
            \'value\' => array(\'data1\', data2\'),
            \'compare\' => \'IN\'
        ),
    ) );
然而,这也将返回(field1=\'data1\' and field1=\'data1\') or (field1=\'data2\' and field1=\'data2)\', 所以这可能并不理想。我不确定这是否符合你的要求。

结束

相关推荐

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

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