trademarks

讓首頁與 RSS 訂閱排除某個分類

很簡單的程式碼,官方文件與網路文章有很多教學。

使用案例:想讓某個分類不會出現在首頁與 RSS 訂閱,但仍可以從分類彙整中看到或是閱讀單篇文章。我本身的需求是最近開始使用 Twitter Tools 幫我把推訊都記錄下來,每天自動彙整成一篇文章,而這些文章不想讓它出現在首頁與 RSS 訂閱中。

方案:把下一段程式碼放在某個外掛裡頭,然後啟用該外掛即可。

function exclude_category($query) {
	if ($query->is_home() || $query->is_feed()) {
		$query->set('cat', '-90'); // 90 是該分類的 ID。
	}
		return $query;
}
add_filter('pre_get_posts', 'exclude_category');

不過這樣會出現一個問題,那就是用 XML-RPC 撈文章時也看不到該分類的文章,例如使用 WordPress for iOS 管理文章時也看不到。原因是我們忘記加上權限判斷,修改過後的程式碼如下:

function exclude_category($query) {
	if (!current_user_can('edit_posts') && ($query->is_home() || $query->is_feed())) {
			$query->set('cat', '-90'); // 90 是該分類的 ID。
	}
	return $query;
}
add_filter('pre_get_posts', 'exclude_category');