如何讓 in_category 正確判斷子分類文章

如果有在用 in_category 這類參數做為判斷條件的人就會發現他判斷式是不包括該分類的子分類,如果說有要子分類文章也列入判斷條件的人可以看看以下官方提出的解決方法。

首先在你的佈景主題的 functions.php 檔案插入下面代碼(記得是插入在最後一行的 ?> 之前…)。

if ( ! function_exists( 'post_is_in_descendant_category' ) ) {
	function post_is_in_descendant_category( $cats, $_post = null ) {
		foreach ( (array) $cats as $cat ) {
			// get_term_children() accepts integer ID only
			$descendants = get_term_children( (int) $cat, 'category' );
			if ( $descendants && in_category( $descendants, $_post ) )
				return true;
		}
		return false;
	}
}

然後調用的參數寫法是:in_category( 'themes' ) || post_is_in_descendant_category(6)
上面的範例themes是指輸入該父分類的slug,再來後面的6是指該父分類的ID編號。

PS: 這可以運用在之前介紹過的 Widget Logic|側邊欄條件判斷顯示 外掛裡。

資料來源:http://codex.wordpress.org/Function_Reference/in_category

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments