4
我正在查看我的functions.php并想知道为什么代码A使用add_action
,而代码B使用add_filter
?
CODE A的主要目标是对都包含和排除特定类别。
CODE B的主要目标是排除特定类别。add_filter与add_action之间的区别
对于代码B,使用add_action
代码A
和add_filter
是否正确?
。
代码:显示特定类别(称为 “特色”)的网页,而不是 “最近的帖子”
function featured_category($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('category_name', 'featured');
$query->set('category__not_in', array(60, 61));
$query->set('posts_per_page', 5);
}
}
add_action('pre_get_posts', 'featured_category');
。
。
代码B:排除 “主办的岗位类别” 的搜索结果
功能search_filter($查询){
if ($query->is_search && $query->is_main_query()) {
$query->set('post_type', 'post');
$query->set('category__not_in', array(60, 61));
$query->set('posts_per_page', 20);
}
return $query;
}
add_filter('pre_get_posts', 'search_filter');
谢谢,我将使用'add_action'。但只是好奇,就网站速度而言,这会加快网站速度,'add_action'或'add_filter'? ----另外,请注意我在上面使用了三个'$ query-> set' - 做了很多'$ query-> set'导致一个缓慢的网站? – leko 2014-10-20 17:14:44
'add_action' vs'add_filter'对速度没有影响。执行完全相同的过程。你正在使用set方法。如果这些是你需要设置的选项,那么这就是你需要做的。你不能以某种方式将它们组合成一个电话。我不得不看看set方法,但是我看不出它对性能有任何影响(不包括当然最终运行的数据库查询)。 – 2014-10-20 17:38:46