J'ai la fonction qui vérifie quelle est la catégorie principale principale de poste. J'ai donc un arbre de catégorie comme celui-ci
Foo
-bar
--foobar
cat2
et si post est dans foobar, ma fonction post_is_in_descendant_category me montre "foo" et je peux styliser cette publication avec style-foo.css. Ce que je veux maintenant, c’est de rendre cela possible pour la page de catégorie "foobar". Les fonctions Wordpress in_category ne fonctionnent que pour les publications.
Donc, mon code if ( in_category( 'foo' ) || post_is_in_descendant_category( get_term_by( 'name', 'foo', 'category' )) || is_category('56') )
ne fonctionne pas pour les sous-catégories.
Si je comprends bien, votre fonction "post_is_in_descendant_category" vérifie si un message est le descendant d'une catégorie et que vous souhaitez vérifier si une catégorie est une descendance. Si tel est le cas, ajoutez cette fonction à votre 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;
}
et l'utiliser comme ça:
if (is_desc_cat("foo")) {
// use foo.css
} else {
// use default.css
}
J'espère que cela t'aides.
Essaye ça:
$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 {
}