合并/混合2个查询if和条件语句为真

时间:2014-01-21 18:51:54

标签: php wordpress

我有这个wp查询...

$downloads = new WP_Query(array(
    'post_type' => 'download',
    'paged' => $paged,
    'posts_per_page' => 20
));


但是如果我的$user_admin条件为真,我想将其添加到查询中......

if ($user_admin)
    $downloads = new WP_Query(array(
        'meta_query' => array(
            array(
                'key' => 'download_access_rules',
                'value' => 'genpo',
                'compare' => 'NOT IN'
            )
        )
    )
);


所以我运行它似乎打破了我的循环,但没有造成致命的错误......

$downloads = new WP_Query(array(
    'post_type' => 'download',
    'paged' => $paged,
    'posts_per_page' => 20
));

if ($user_admin) {
    $downloads = new WP_Query(array(
        'meta_query' => array(
            array(
                'key' => 'download_access_rules',
                'value' => 'genpo',
                'compare' => 'NOT IN'
            )
        )
    ));
}

好的,我的问题基本上是这样的......如果$downloads条件等于true,我如何混合两个$user_admin变量。

但是,实际执行此操作的最快,最正确的方法不起作用。

2 个答案:

答案 0 :(得分:1)

尝试:

$query = array(
    'post_type' => 'download',
    'paged' => $paged,
    'posts_per_page' => 20
);


if ($user_admin) {
    $query2 = array(
        'meta_query' => array(
            array(
                'key' => 'download_access_rules',
                'value' => 'genpo',
                'compare' => 'NOT IN'
            )
        )
    );

   $query = array_merge($query, $query2);
}

$downloads = new WP_Query($query);

希望这有帮助!

答案 1 :(得分:1)

从查看代码看,您可以将数组合并在一起,然后创建新的WP_Query对象。根据您的描述,我知道您说您希望将查询混合到一个查询中,而不是将查询结果混合到一个中。

$args = array(
    'post_type' => 'download',
    'paged' => $paged,
    'posts_per_page' => 20
);

if ($user_admin) {
    $args = array_merge($args, array(
        'meta_query' => array(
            array(
                'key' => 'download_access_rules',
                'value' => 'genpo',
                'compare' => 'NOT IN'
            )
        )
    ));
}

$downloads = new WP_Query($args);

我也想知道你表示你当前的代码似乎打破了你的循环。你的第一个代码示例究竟发生了什么。你得到一个空白页面还是没有回复任何文章?

在检查用户是否为管理员时需要注意的另一件事是,您也可以使用is_admin()代替$ user_admin。

Function Reference/is admin