J'ai des problèmes depuis une semaine maintenant. .. Je passe un mauvais moment avec ça!
J'explique ma situation:
J'ai mis en place un style pour la catégorie post.
(une couleur de fond et une petite image de fond).
par exemple.
Parent A - Enfant 1 - Enfant 2 - Enfant 3
Parent B -Enfant 1 -Enfant 2
Parent C - Enfant 1 - Enfant 2
La boucle que j'utilise est:
<a href="#" class="<?php $category = get_category($cat);
echo $category->category_nicename;?>"><?php single_cat_title('') ?></a>
Cela fonctionne bien lorsque je suis sur une page parent_category, cela apporte le style que j'ai configuré par css, en utilisant le category_slug comme classe.
(par exemple de css pour la catégorie :)
article.category-business-and-finance .meta-category2 a.business-and-finance {
color: white;
float: left;
padding: 2px;
padding-left: 25px;
background: url(myimg) no-repeat left ;
background-size: 15px 15px;
background-color: #c3bc19 ;
background-position-x: 5px;
padding-right: 5px;
}
Cependant, lorsque je vais à la category_page d'une child_category, cela affiche le style d'une catégorie différente. comme certains messages sont configurés pour multipeler parent_category et plusieurs chld-category en même temps. Je ne veux pas créer de css pour chaque catégorie_enfant, car beaucoup de sous-catégories seraient ajoutées à l'avenir.
C’est ce que j’aimerais réaliser, c’est pour la catégorie enfants que la classe de son slug parent_category actuelle.
Comment cela est-il possible?
J'ai essayé cette boucle à la place:
<a href="#" class="<?php $parentscategory ="";
foreach((get_the_category()) as $category) {
if ($category->category_parent == 0) {
$parentscategory .= ' ' . $category->slug . ' ';
}
}
echo substr($parentscategory,0,-2);?>"><?php single_cat_title('') ?></a>
Ceci ajoute la classe de toutes les parent_category attachées à la publication. .. Y a-t-il un moyen de ne le faire que pour l'actuel?
(par exemple, sur la page de catégorie de Child-1 du parent A, mais le poste est également associé aux parents B et C. cela m'apporte la classe des parents AB et C et le moment - je voudrais joindre la classe uniquement du parent A - comme dans la catégorie enfant de la page du parent A).
Comment puis-je faire cela? devrais-je essayer une current_parent_category? cat_ancestor?
Merci pour tout votre temps,
Vous pouvez utiliser get_ancestors()
. Vous pouvez transformer ceci:
<a href="#" class="<?php $category = get_category($cat);
echo $category->category_nicename;?>"><?php single_cat_title('') ?></a>
Dans ceci (je ne sais pas ce qu'est le $cat
car vous ne l'avez pas indiqué dans votre question, je suppose qu'il s'agit d'un identifiant de catégorie, sinon vous devez fournir un identifiant de catégorie):
<?php
$cat_ancestors = get_ancestors( $cat, 'category' );
$top_parent = get_category( end( $cat_ancestors ) );
?>
<a href="#" class="<?php esc_attr_e( $top_parent->slug );?>"><?php echo $top_parent->name; ?></a>
Pour que le code fonctionne également si la catégorie est déjà la catégorie parente la plus élevée, vous devez vérifier la valeur renvoyée par get_ancestors
. Par exemple:
<?php
$cat_ancestors = get_ancestors( $cat, 'category' );
if( !empty($cat_ancestors) ) {
$cat = get_category( end( $cat_ancestors ) );
} else {
$cat = get_category( $cat );
}
?>
<a href="#" class="<?php esc_attr_e( $cat->slug );?>"><?php echo $cat->name; ?></a>