Ich habe seit einer Woche einige Probleme. .. Ich habe eine schlechte Zeit damit!
Ich erkläre meine Situation:
Ich habe einen Stil für die Beitragskategorie eingerichtet.
(eine Hintergrundfarbe und ein kleines Hintergrundbild).
z.B.
Elternteil A - Kind 1 - Kind 2 - Kind 3
Elternteil B - Kind 1 - Kind 2
Elternteil C - Kind 1 - Kind 2
Die Schleife, die ich benutze, ist:
<a href="#" class="<?php $category = get_category($cat);
echo $category->category_nicename;?>"><?php single_cat_title('') ?></a>
Dies funktioniert einwandfrei, wenn ich mich auf einer parent_category-Seite befinde. Dabei wird der von css eingerichtete Stil verwendet, wobei category_slug als Klasse verwendet wird.
(zB von CSS für Kategorie :)
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;
}
Wenn ich jedoch zur category_page einer child_category gehe, wird der Stil einer anderen Kategorie angezeigt. Einige Posts sind gleichzeitig auf multipel parent_category und multiple chld-category eingestellt. Ich möchte keine CSS für jede child_category erstellen, da viele Unterkategorien in der Zukunft hinzugefügt würden.
Das, was ich erreichen möchte, ist für die child_category, um die Klasse seiner aktuellen parent_category Schnecke zu bringen.
Wie ist das möglich zu erreichen?
Ich habe stattdessen diese Schleife ausprobiert:
<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>
Dadurch wird die Klasse aus der gesamten an den Beitrag angehängten parent_category hinzugefügt. .. Gibt es eine Möglichkeit, es nur auf die aktuelle zu machen?
(ZB bin ich auf der Kategorieseite von Kind-1 von Eltern A, aber der Beitrag ist auch in Eltern B und Eltern C angehängt. Er bringt mir die Klasse von Eltern AB und C und den Moment - ich möchte die Klasse anhängen von nur Elternteil A - wie im auf Kindkategorie von Elternteil A Seite).
Wie kann ich das machen? soll ich eine current_parent_category ausprobieren? cat_ancestor?
Vielen Dank für Ihre Zeit,
Sie könnten get_ancestors()
verwenden. Sie können dies umwandeln:
<a href="#" class="<?php $category = get_category($cat);
echo $category->category_nicename;?>"><?php single_cat_title('') ?></a>
Dazu (ich weiß nicht, was $cat
ist, da Sie ihn in Ihrer Frage nicht gezeigt haben. Ich gehe davon aus, dass es sich um eine Kategorie-ID handelt. Andernfalls müssen Sie eine Kategorie-ID angeben.):
<?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>
Damit der Code auch funktioniert, wenn die Kategorie bereits die oberste übergeordnete Kategorie ist, müssen Sie den von get_ancestors
zurückgegebenen Wert überprüfen. Zum Beispiel:
<?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>