wake-up-neo.com

Holen Sie sich die aktuelle Elternkategorie in einer Schleife oder bei einem großen Problem mit einem Cat-Vorfahren

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,

1
tibewww

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>
1
cybmeta