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