可以在单个查询中从多个元键/值获取帖子吗?

时间:2015-09-03 作者:hyp0xia

假设我有一堆帖子,其中一些有一个称为“key1”的元键,一些有一个称为“key2”的元键。但这两个职位并不都有。

我想创建一个自定义查询来检索任何以“key1”或“key2”作为元键的帖子。(没有一个职位同时拥有这两个职位)。

在深入研究之后,我最接近的方法(对于单个查询)是使用meta\\u查询数组,它允许我查询具有多个元键的帖子。然而,我正在寻找多个元键的帖子。。ie:如果它有键1或键2,则加载查询。

除了上述内容之外,我似乎可以查询具有key1或key2的帖子的唯一其他方法是创建多个查询和循环。我想知道是否有更干净的解决方案。我理想的最终结果是将生成的帖子相互混合,并将其显示为来自单个查询。对于多个查询,我觉得我无法实现这一点,因为在下一个查询/循环中,我将首先使用键1获得结果,然后使用键2获得结果。

提前感谢!

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

下面这样的简单查询应该适合您:

<?php
$_query = new WP_Query( array(
        \'post_type\'         => \'post\',
        \'posts_per_page\'    => -1,
        \'post_status\'       => \'publish\',
        \'meta_query\' => array(
            \'relation\' => \'OR\',
            array(
                \'key\'     => \'key1\'
            ),
            array(
                \'key\'     => \'key2\'
            ),
        ),
    ) );
?>
请注意\'relation\'=>\'OR\' 在里面meta_query.

更多信息,请访问:

SO网友:certainstrings

您可以尝试在meta\\u查询中添加更多检查。

$args = array(

    \'post_type\'   => \'post\',
    \'posts_per_page\' => 10,
    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'relation\' => \'AND\', // make sure only this key exists by matching parameters
            array(
                \'key\' => \'key1\',
                \'compare\' => \'EXISTS\'
            ),
            array(
                \'key\' => \'key2\',
                \'compare\' => \'NOT EXISTS\'
            )
       ),
       array(
           \'relation\' => \'AND\', // check for the opposite here
            array(
                \'key\' => \'key2\',
                \'compare\' => \'EXISTS\'
            ),
            array(
                \'key\' => \'key1\',
                \'compare\' => \'NOT EXISTS\'
            )
        )
    )
);
如果只比较两个元键,那么这是一个确定的解决方案,但编写sql查询可能会更简洁。

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the