So erhalten Sie die übergeordnete Kategorie Slug des aktuellen Beitrags
6 Antworten
- Stimmen
-
- 2014-01-25
Siemüssen den von
$category[0]->category_parent
zurückgegebenen ID-Wert verwenden undihn durchget_term()
übergeben.Beispiel:$category = get_the_category(); $category_parent_id = $category[0]->category_parent; if ( $category_parent_id != 0 ) { $category_parent = get_term( $category_parent_id, 'category' ); $css_slug = $category_parent->slug; } else { $css_slug = $category[0]->slug; }
You will need to use the ID value returned by
$category[0]->category_parent
and pass it throughget_term()
. Example:$category = get_the_category(); $category_parent_id = $category[0]->category_parent; if ( $category_parent_id != 0 ) { $category_parent = get_term( $category_parent_id, 'category' ); $css_slug = $category_parent->slug; } else { $css_slug = $category[0]->slug; }
-
- 2014-01-25
Siemüssen die übergeordneten Kategoriedaten abfragen.
get_category
wurde so ziemlich dafürentwickelt.$category = get_the_category(); $parent = get_category($category[0]->category_parent); echo $parent->slug;
Dadurch wird das unmittelbare übergeordnete Element der Kategorie zurückgegeben. Dasist diese Reihe von Kategoriengegeben:
- Cartoon
- Hund
- Scooby
- Hund
Der obige Codegibt "Dog" zurück,wenn Sieihm die IDfür "Scooby"geben. Wenn Sie die oberste übergeordnete Kategorie - "Cartoon" -möchten,egal wietief die Verschachtelungist,verwenden Sie Folgendes:
$category = get_the_category(); $parent = get_ancestors($category[0]->term_id,'category'); if (empty($parent)) { $parent[] = array($category[0]->term_id); } $parent = array_pop($parent); $parent = get_category($parent); if (!is_wp_error($parent)) { var_dump($parent); } else { echo $parent->get_error_message(); }
Das hat auch den Vorteileiner relativ ordentlichen Fehlerbehandlung.
You will need to query for the parent category data.
get_category
is pretty much built for doing that.$category = get_the_category(); $parent = get_category($category[0]->category_parent); echo $parent->slug;
That will return the immediate parent of the category. That is given this set of categories:
- Cartoon
- Dog
- Scooby
- Dog
The code above will return "Dog" if you give it the ID for "Scooby". If you want the topmost parent category-- "Cartoon"-- no matter how deep the nesting, use something like this:
$category = get_the_category(); $parent = get_ancestors($category[0]->term_id,'category'); if (empty($parent)) { $parent[] = array($category[0]->term_id); } $parent = array_pop($parent); $parent = get_category($parent); if (!is_wp_error($parent)) { var_dump($parent); } else { echo $parent->get_error_message(); }
That also has the advantage of relatively neat error handling.
-
Vielen Dankfür die Antwort,undich werde wahrscheinlichin Zukunftein ähnliches Snippet verwenden,aberes wirft auch Fehler auf,wenn der Beitragin einer übergeordneten Kategorie/Kategorie ohne Unterkategorien vorliegt.Thanks for the answer, and i'll likely use a similar snippet in the future, but it also throws errors if the post in a parent category / category without subcategories.
- 0
- 2014-01-26
- DLR
-
@ DLR: Ja,ich weiß.Ichmusstegehen,bevorich die Antwort vervollständigen konnte.Ich habe anetwas Komplexerem und Robusteremgearbeitet.Siehe die Bearbeitung.@DLR: Yes, I know. I had to leave before I could complete the answer. I was working on something more complex and more robust. See the edit.
- 0
- 2014-01-26
- s_ha_dum
-
- 2018-12-05
Ichmag die vorherige Antwort von @s_ha_dum,aber um die Kategorie der obersten Ebene unabhängig von der Tiefe zuerhalten,habeicheine meiner Meinungnacheinfachere Lösung verwendet:
$cats = get_the_category(); foreach ( $cats as $cat ) { if ( $cat->category_parent == 0 ) { return $cat->name; // ...or whatever other attribute/processing you want } } return ''; // This was from a shortcode; adjust the return value to taste
I like the previous answer from @s_ha_dum, but for getting the top-level category regardless of depth, I used what I consider to be a simpler solution:
$cats = get_the_category(); foreach ( $cats as $cat ) { if ( $cat->category_parent == 0 ) { return $cat->name; // ...or whatever other attribute/processing you want } } return ''; // This was from a shortcode; adjust the return value to taste
-
- 2019-03-22
Wennesjemandem helfen kann ...eine Kinderkatze odereinen Elternteil zubekommen,abhängig von der
0
oder1
,die Siein die Kategorie$
$ category=get_the_category (); $parent=get_cat_name ($ category [0] - > category_parent); if (!function_exists ('get_cat_slug')) { Funktionget_cat_slug ($ cat_id) { $ cat_id=(int) $ cat_id; $ category=& amp;get_category ($ cat_id); return $ category- > slug; }} }} if (!empty ($parent)) { $ output.='& lt; H2 >'.esc_html ($ category [1] - >name).'& lt;/H2 >'; }else { $ output.='& lt; H2 >'.esc_html ($ category [0] - >name).'& lt;/H2'; }}
If it can help somebody... to get child cat or parent, depending on the
0
or1
you put on the$category
$category = get_the_category(); $parent = get_cat_name( $category[0]->category_parent ); if( ! function_exists('get_cat_slug') ) { function get_cat_slug($cat_id) { $cat_id = (int) $cat_id; $category = &get_category($cat_id); return $category->slug; } } if ( !empty($parent) ) { $output .= '<H2>' . esc_html( $category[1]->name ) . '</H2>'; } else { $output .= '<H2>' . esc_html( $category[0]->name ) . '</H2'; }
-
- 2019-06-11
Sie könnenesfolgendermaßen vereinfachen:
$category = get_the_category(); $cat_parent = $category[0]->category_parent; $category = $cat_parent != 0 ? get_term($cat_parent, 'category')->slug : $category[0]->slug;
You can simplify it like this:
$category = get_the_category(); $cat_parent = $category[0]->category_parent; $category = $cat_parent != 0 ? get_term($cat_parent, 'category')->slug : $category[0]->slug;
-
- 2020-01-21
Diefolgende Funktionist angepasst,um die Kategorie root zurückzugeben:
function get_root_category($category = null) { if (!$category) $category = get_the_category()[0]; $ancestors = get_ancestors($category->term_id, 'category'); if (empty($ancestors)) return $category; $root = get_category(array_pop($ancestors)); return $root; }
Verwendung:
get_root_category()->slug
The following function is adapted to return the root category:
function get_root_category($category = null) { if (!$category) $category = get_the_category()[0]; $ancestors = get_ancestors($category->term_id, 'category'); if (empty($ancestors)) return $category; $root = get_category(array_pop($ancestors)); return $root; }
Usage:
get_root_category()->slug
Mein Thema wirdnach Kategoriemit demfolgenden Codegestaltet,der den Slug der aktuellen Kategorie als CSS-Klasseeinfügt.
Jetzt werdeicheine große Anzahlneuer Unterkategorien hinzufügen,undes scheint albern,sie allein CSS hinzuzufügen,wennichin der Lage sein sollte,einfach die übergeordnete Kategorie des aktuellen Beitrags auszuwählen und darauf Stile anzuwenden.
Ich konnte den Namen der übergeordneten Kategorie abrufen:
Aber Leerzeichen (und Großschreibung) sindein Problem ... Undich kann anscheinendnicht die Schnecke der übergeordneten Kategoriebekommen.
Ich weiß,dassmir wahrscheinlichirgendwoein einfacher Schrittfehlt,aberjeder Einblick wäre sehr dankbar.