投稿の主なトップカテゴリーが何かを確認する機能があります。だから私はこのようなカテゴリツリーがあります
Foo
-bar
--foobar
cat2
もしpostがfoobarにあれば、私の関数post_is_in_descendant_categoryに "foo"と表示され、style-foo.cssでその投稿をスタイルすることができます。私が今欲しいのは、同じことをスタイルページカテゴリ「foobar」にも可能にすることです。 Wordpressの関数in_categoryは投稿に対してのみ機能します。
したがって、私のコードif ( in_category( 'foo' ) || post_is_in_descendant_category( get_term_by( 'name', 'foo', 'category' )) || is_category('56') )
はサブカテゴリには機能しません。
私が正しく理解しているならば、あなたの "post_is_in_descendant_category"関数は投稿がカテゴリの子孫であるかどうかをチェックし、あなたはカテゴリが子孫であるかどうかチェックしたいです。もしそうなら、この関数をあなたのfunctions.phpに追加してください
function is_desc_cat($cats, $_post = null) {
foreach ((array)$cats as $cat) {
if (in_category($cat, $_post)) {
return true;
} else {
if (!is_int($cat)) $cat = get_cat_ID($cat);
$descendants = get_term_children($cat, 'category');
if ($descendants && in_category($descendants, $_post)) return true;
}
}
return false;
}
そしてこれを次のように使います。
if (is_desc_cat("foo")) {
// use foo.css
} else {
// use default.css
}
お役に立てれば。
これを試して:
$cat_id = $wp_query->get_queried_object_id();
$parents = explode( '/', get_category_parents( $cat_id, false ) );
if( in_array( 'foo', $parents ) ) {
}
elseif( in_array( 'cat2', $parents ) ) {
}
else {
}