Hvordan vise et banner kun i en bestemt kategori? En utviklerguide til avanserte betingelser og foreldresjekk.
NB

Hvordan sjekke om et innlegg tilhører EN bestemt taksonomi-term?

5.00 /5 - (24 votes )
Sist verifisert: 1. mars 2026
Erfaring: 5+ års erfaring
Innholdsfortegnelse

En vanlig oppgave for en utvikler er å vise et element (f.eks. et reklamebanner) kun hvis innlegget tilhører en bestemt kategori eller taksonomi (f.eks. ‘Filmsjanger: Komedie’).

I WordPress har vi to hovedfunksjoner for dette som ofte forveksles: is_tax() og has_term(). Forskjellen mellom dem er avgjørende for logikken i temaet ditt.


1. Is_tax() vs has_term() – Hva er forskjellen?

Is_tax() – Sidekontekst (arkiv)

Bruk denne for å sjekke hvilken side brukeren ser på.

  • Er brukeren inne på arkivsiden for kategorien “Skrekk”?
if ( is_tax( 'sjanger', 'skrekk' ) ) {
    echo 'Du er på skrekkfilmlisten!';
}

Denne funksjonen returnerer false hvis du er inne på et enkeltinnlegg (Single Post), selv om det innlegget faktisk er en skrekkfilm!

Has_term() – Innleggskontekst (single)

Bruk denne for å sjekke hva som er tilordnet et spesifikt innlegg.

  • Er denne spesifikke filmen en “Skrekkfilm”?
if ( has_term( 'skrekk', 'sjanger' ) ) {
    echo 'Dette innlegget er en skrekkfilm.';
}

Denne funksjonen brukes oftest inni The Loop eller i filen single.php.


2. Hierarkiproblemet (foreldre og barn)

Den største utfordringen er at has_term() kun sjekker nøyaktig den termen du angir.

Anta denne strukturen:

  • Filmer (Taksonomi: movie_genre)
    • Komedie (ID: 10)
      • Romantisk (ID: 11)
      • Mørk komedie (ID: 12)

Hvis du har et innlegg som KUN er tilordnet “Romantisk”, vil sjekken:

has_term( 'komedie', 'movie_genre' ) 

returnere FALSE. Hvorfor? Fordi innlegget teknisk sett ikke har avkrysningsboksen “Komedie” valgt, bare “Romantisk”.

Løsning: Hjelpefunksjon for etterkommere

For å sjekke om et innlegg tilhører kategorien “Komedie” ELLER noen av dens underkategorier, må vi skrive en egen hjelpefunksjon.

/**
 * Sjekker om et innlegg tilhører et term eller dets barn.
 */
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. Sjekk direkte tilordning (raskest)
    if ( has_term( $term->term_id, $taxonomy, $post_id ) ) {
        return true;
    }

    // 2. Hent alle barn av termen
    $children = get_term_children( $term->term_id, $taxonomy );
    
    if ( is_wp_error( $children ) || empty( $children ) ) {
        return false;
    }

    // 3. Sjekk om innlegget har noen av barna
    return has_term( $children, $taxonomy, $post_id );
}

Bruk:

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

3. Ytelsesoptimalisering

Funksjonen get_term_children() utfører en databasespørring. Hvis du bruker dette i en løkke som viser 50 innlegg, gjør du 50 ekstra SQL-spørringer.

En viktig optimalisering er å sende ID i stedet for Slug. WordPress må slå opp ID-en fra Slug-en uansett, så ved å oppgi ID-en (f.eks. 10) sparer du en spørring.

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

// Tregere (Slug -> krever oppslag)
has_term( 'komedie', 'movie_genre' );

Oppsummering

  1. Bruk is_tax() kun for å sjekke om du er på en arkivside.
  2. Bruk has_term() for logisk sjekk av enkeltinnlegg.
  3. Husk at has_term ikke arver – hvis du trenger “kategori og barn”-logikk, bruk en egendefinert hjelpefunksjon.
Hva er Hvordan sjekke om et innlegg tilhører EN bestemt taksonomi-term?
Hvordan sjekke om et innlegg tilhører EN bestemt taksonomi-term? er viktig når du vil ha en mer stabil WordPress-løsning, bedre ytelse og færre produksjonsfeil.
Hvordan implementerer man Hvordan sjekke om et innlegg tilhører EN bestemt taksonomi-term?
Start med en basisrevisjon, avklar omfang og rammer, og innfør endringer i små, testbare steg.
Hvorfor er Hvordan sjekke om et innlegg tilhører EN bestemt taksonomi-term viktig?
Størst effekt kommer vanligvis fra teknisk kvalitet, tydelig innholdsstruktur og jevnlig verifisering.

Trenger du FAQ tilpasset bransje og marked? Vi lager en versjon som støtter dine forretningsmål.

Ta kontakt

Relaterte artikler