实现对WordPress wp_Query的OR语句

时间:2013-01-09 作者:richelliot

我正在尝试返回所有符合以下条件的帖子:

类别必须为63

帖子必须有一个与名为“android\\u link”的元键关联的值

我当前的参数数组当前不工作,因为它要求满足这两个条件。是否有可能更改它,以便只有满足其中一个条件才能返回一个职位?

    $args = array(
        \'paged\' => $paged,
        \'order\' => \'DESC\',
        \'meta_key\' => \'android_link\',
        \'post_type\' => array( \'post\', \'app\' ),
        \'cat\' => \'63\',

        \'meta_query\' => array(
            array(
                \'key\' => \'android_link\',
                \'compare\' => \'EXISTS\',
                )
            )
        );

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

您可以运行两个查询和merge 结果如下:

$cat_query_args = array(
    \'paged\' => $paged,
    \'order\' => \'DESC\',
    \'meta_key\' => \'android_link\',
    \'post_type\' => array( \'post\', \'app\' ),
    \'cat\' => \'63\',
);

$meta_query_args = array(
    \'meta_query\' => array(
        array(
            \'key\' => \'android_link\',
            \'compare\' => \'EXISTS\',
        )
    )
);

$cat_query  = new WP_Query( $cat_query_args  );
$meta_query = new WP_Query( $meta_query_args );

$merged_query_args = array_merge( $cat_query, $meta_query );
$merged_query = new WP_Query( $merged_query_args );

SO网友:Rohit Pande

您可以运行两个查询并分别遍历结果。

$paged = (get_query_var(\'paged\')) get_query_var(\'paged\');

$cat_query_args = array(
    \'paged\' => $paged,
    \'order\' => \'DESC\',
    \'meta_key\' => \'android_link\',
    \'post_type\' => array( \'post\', \'app\' ),
    \'cat\' => \'63\',
);

$meta_query_args = array(
    \'meta_query\' => array(
        array(
            \'key\' => \'android_link\',
            \'compare\' => \'EXISTS\',
        )
    )
);

$cat_query  = new WP_Query( $cat_query_args  );
$meta_query = new WP_Query( $meta_query_args );
运行一个简单的while循环$cat_query 然后运行另一个while循环,以获得$meta_query. 这将创建与您正在执行的效果相同的效果OR 对查询参数的操作。

结束

相关推荐

Multiple loops for plugin

好的,我正在使用插件“the Cart Press”,我试图了解使用自定义帖子类型时多个循环是如何工作的。如果我定期查询帖子,它只会返回我的博客帖子,而不是我的TCP产品。当定期显示产品时,它们使用与博客帖子相同的循环功能,因此我想知道是什么不同的情况导致这些产品被加载。我过去使用过一个名为“Simple portfolio”的公文包插件,它有一个名为Simple\\u portfolio\\u get\\u projects()的自定义函数,它只给了我一个项目数组,我希望能够对TCP产品执行同样的操作。