合并/混合2查询如果有条件的语句为真



我有此WP查询...

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


但是,如果我的$user_admin条件为TRUE ...

,我想将其添加到查询中
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'
            )
        )
    ));
}

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

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

从查看您的代码,看起来您可以将数组合并在一起,然后创建新的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。

函数参考/admin

尝试:

$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);

希望这会有所帮助!

最新更新