In Term-Archiv-Überschriften Parent-Terms mit anzeigen

human 3131802 1920
Bild von Eluj auf Pixabay

In einem komplexen Projekt wiederholten sich für mehrere Hauptkategorien die Unterkategorien. Mehrere Produktserien (Hauptkategorien) gab es als jeweils gleiche Typen. Doch diese Typen können sich im WordPress wie es heute ist, keine Eltern mehr teilen. Außerdem sollten die Typen für jede Serie extra angezeigt werden.

Also war es nötig und sinnvoll, die Typen für jede Serie jeweils els eigene Terme zu führen. Die Namen waren zwar identisch, die Slugs jedoch mussten sich unterscheiden.

Ein Effekt davon war allerdings, dass es für die redaktionelle Bearbeitung nicht immer leicht war zu differenzieren, welche Unterkategorie zu welcher Hauptkategorie gehörte. Auch in den Archiv-Titeln fehlte der Zusammenhang, um welche Serie es sich bei dem gewählten Typen handelt.

Das Erfordernis den angezeigten Titel um die übergeordnete Kategorie zu erweitern bestand also sowohl im Front- als auch im Backend-Bereich.

Frontend

function flxo_product_cat_title_front( $title ) {
    if ( !is_product_category() ) return $title;
    $term = get_queried_object();
    if ( 0 === $term->parent ) return $title;
    $taxonomy  = get_taxonomy( $term->taxonomy );
    $parent = get_term_by( 'id', $term->parent, $term->taxonomy );
    return esc_html($title . ' | ' . $parent->name);
}
add_filter('single_term_title','flxo_product_cat_title_front', 13 );

Backend

Funktioniert so auch mit dem Plugins Advanced Taxonomy Terms Order bei dem man ansonsten nur eine ID zum Namen des Terms erhält, und damit bei der Sortierung ziemlich aufgeschmissen wäre.

function flxo_product_cat_title_admin( $term_name, $term_id ) {
    if ( !is_admin() ) return $term_name;
    $term = get_term_by( 'id', $term_id, 'product_cat' );
    if ( !isset( $term->taxonomy ) || 'product_cat' != $term->taxonomy ) return $term_name;
    $parent_id = $term->parent;
    if ( 0 === $parent_id ) return $term_name;
    $parent = get_term_by( 'id', $parent_id, 'product_cat' );
    return esc_html($term_name . ' (' . $parent->name . ')');
}
add_filter( 'term_name', 'flxo_product_cat_title_admin', 10, 2 );

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable