我有这个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
变量。
但是,实际执行此操作的最快,最正确的方法不起作用。
答案 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。