Wie zeigt man einen Banner nur in einer bestimmten Kategorie an? Ein Entwickler-Guide für fortgeschrittene Bedingungen.
DE

Wie prüft man, ob ein Beitrag zu einem bestimmten Taxonomie-Term gehört?

5.00 /5 - (26 Stimmen )
Zuletzt überprüft: 1. März 2026
Erfahrung: 5+ Jahre Erfahrung
Inhaltsverzeichnis

Eine häufige Aufgabe für Entwickler ist es, ein Element (z. B. einen Werbebanner) nur dann anzuzeigen, wenn der Beitrag zu einer bestimmten Kategorie oder Taxonomie gehört (z. B. ‘Filmgenre: Komödie’).

In WordPress haben wir dafür zwei Hauptfunktionen, die oft verwechselt werden: is_tax() und has_term(). Der Unterschied zwischen ihnen ist entscheidend für die Logik Ihres Themes.


1. is_tax() vs has_term() – Wo liegt der Unterschied?

is_tax() – Seiten-Kontext (Archiv)

Verwenden Sie dies, um zu prüfen, welche Seite der Benutzer gerade ansieht.

  • Befindet sich der Benutzer gerade im Archiv der Kategorie “Horror”?
if ( is_tax( 'genre', 'horror' ) ) {
    echo 'Sie befinden sich auf der Horror-Liste!';
}

Diese Funktion gibt false zurück, wenn Sie sich auf der Seite eines einzelnen Beitrags (Single Post) befinden, selbst wenn dieser Beitrag ein Horrorfilm ist!

has_term() – Beitrags-Kontext (Single)

Verwenden Sie dies, um zu prüfen, was einem bestimmten Beitrag zugewiesen ist.

  • Ist dieser spezielle Film ein “Horrorfilm”?
if ( has_term( 'horror', 'genre' ) ) {
    echo 'Dieser Beitrag ist ein Horrorfilm.';
}

Diese Funktion wird meistens innerhalb des The Loop oder in der Datei single.php verwendet.


2. Das Hierarchie-Problem (Eltern und Kinder)

Die größte Herausforderung ist, dass has_term() nur exakt den Term prüft, den Sie angeben.

Nehmen wir folgende Struktur an:

  • Filme (Taxonomie: movie_genre)
    • Komödien (ID: 10)
      • Romantische (ID: 11)
      • Schwarze Komödien (ID: 12)

Wenn ein Beitrag NUR “Romantische” zugewiesen ist, wird die Prüfung:

has_term( 'komoedien', 'movie_genre' ) 

FALSE zurückgeben. Warum? Weil der Beitrag technisch gesehen nicht das Häkchen bei “Komödien” hat, sondern nur bei “Romantische”.

Lösung: Hilfsfunktion für Nachfahren

Um zu prüfen, ob ein Beitrag zur Kategorie “Komödien” ODER einer ihrer Unterkategorien gehört, müssen wir eine eigene Hilfsfunktion schreiben.

/**
 * Prüft, ob ein Beitrag zu einem Term oder dessen Kindern gehört.
 */
function wppoland_in_term_tree( $term_id_or_slug, $taxonomy, $post_id = null ) {
    $post_id = $post_id ? $post_id : get_the_ID();
    $term    = get_term_by( is_numeric($term_id_or_slug) ? 'id' : 'slug', $term_id_or_slug, $taxonomy );

    if ( ! $term ) {
        return false;
    }

    // 1. Direkte Zuweisung prüfen (am schnellsten)
    if ( has_term( $term->term_id, $taxonomy, $post_id ) ) {
        return true;
    }

    // 2. Alle Kinder des Terms abrufen
    $children = get_term_children( $term->term_id, $taxonomy );
    
    if ( is_wp_error( $children ) || empty( $children ) ) {
        return false;
    }

    // 3. Prüfen, ob der Beitrag eines der Kinder hat
    return has_term( $children, $taxonomy, $post_id );
}

Verwendung:

// In single.php
if ( wppoland_in_term_tree( 'komoedien', 'movie_genre' ) ) {
    get_template_part( 'partials/banner-comedy' );
}

3. Performance-Optimierung

Die Funktion get_term_children() führt eine Datenbankabfrage durch. Verwenden Sie sie in einem Loop mit 50 Beiträgen, machen Sie 50 zusätzliche SQL-Abfragen.

Eine wichtige Optimierung ist die Übergabe der ID anstelle des Slugs. WordPress muss den Slug ohnehin in eine ID umwandeln, also spart die direkte Angabe der ID (z. B. 10) eine Abfrage.

// Schneller (ID)
has_term( 10, 'movie_genre' );

// Langsamer (Slug -> erfordert Lookup)
has_term( 'komoedien', 'movie_genre' );

Zusammenfassung

  1. Verwenden Sie is_tax() nur, um zu prüfen, ob Sie sich auf einer Archivseite befinden.
  2. Verwenden Sie has_term() für die logische Prüfung einzelner Beiträge.
  3. Denken Sie daran, dass has_term nicht vererbt – wenn Sie “Kategorie und Kinder” brauchen, nutzen Sie eine Custom Helper Function.
Was ist Wie prüft man, ob ein Beitrag zu einem bestimmten Taxonomie-Term gehört?
Wie prüft man, ob ein Beitrag zu einem bestimmten Taxonomie-Term gehört? ist relevant, wenn Sie WordPress stabiler betreiben, die Performance verbessern und Produktionsfehler reduzieren möchten.
Wie implementiert man Wie prüft man, ob ein Beitrag zu einem bestimmten Taxonomie-Term gehört?
Starten Sie mit einem Basis-Audit, definieren Sie Umfang und Rahmenbedingungen und setzen Sie Änderungen in kleinen, testbaren Schritten um.
Warum ist Wie prüft man, ob ein Beitrag zu einem bestimmten Taxonomie-Term gehört wichtig?
Die größten Effekte entstehen meist durch technische Qualität, klare Informationsstruktur und regelmäßige Verifizierung.

Sie brauchen ein FAQ für Branche und Zielmarkt? Wir erstellen eine Version passend zu Ihren Business-Zielen.

Kontakt aufnehmen

Ähnliche Artikel