2014-10-19 72 views
1

什么是列出多个$查询 - >设置的正确方法?我是否允许有多个$query->set,如下面的“代码A”?
或者我应该将它们合并为一个?如果是的话,你将如何结合三个$query->set代码?我尝试在下面的“代码B”中将它们组合起来,但它不起作用。


代码:之前结合$查询 - >设置

此代码放在functions.php的

function featured_category($query) { 
    if ($query->is_home() && $query->is_main_query()) { 
    $query->set('category_name', 'new'); 
    $query->set('cat', '-60, -61'); 
    $query->set('posts_per_page', 5); 
    } 
} 
add_action('pre_get_posts', 'featured_category'); 


CODE B:结合后$查询 - >设置

这一代码进入在functions.php的

function featured_category($query) { 
    if ($query->is_home() && $query->is_main_query()) { 
    $query->set(array('category_name' => 'new', 'cat' => '-60, -61', 'posts_per_page' => 5)); 
    } 
} 
add_action('pre_get_posts', 'featured_category'); 
+0

你想要做什么并不清楚。你能解释为什么你想要做$ query-> set()吗?以及什么让你觉得它不起作用? – 2014-10-19 18:38:32

回答

3

使用set方法(这是WP_Query类的一部分)是正确的方法传递2个参数 - 查询参数键和查询参数值。所以你的第一个例子(代码A)是正确的方法。

你可以看看的方法代码在这里:https://core.trac.wordpress.org/browser/tags/4.0/src/wp-includes/query.php#L2328

附: 如果你想从查询中排除多个类别,可以考虑使用category__not_in查询参数,例如:

$query->set('category__not_in', array(60, 61)); 

有关类别的查询参数的详细信息,请http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

+0

是'猫'=>'-60,-61''不正确还是不是首选? ----要明确,'猫'不接受数组?所以你建议''category__not_in''? – leko 2014-10-19 23:06:56

+0

还有两个问题。如果你使用了这么多'$ query-> set',它会减慢你的网站吗? ----还有,如果我想EXCLUDE类别1,2,3,但具体包括类别4和5,允许“方法A”:'$ query-> set('cat',array(-1,-2 ,-3,4,5))? ----或者你必须做两个单独的'$ query-> set',比如“METHOD B”:'$ query-> set('category__in',array(4,5))'----还有 - ---'$ query-> set('category__not_in',array(4,5))' – leko 2014-10-19 23:08:34

+0

您可以通过阅读答案中链接的WP_Query文档来回答所有问题。 – m1r0 2014-12-07 12:12:56

相关问题