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. mai 2026
3min lesetid
Veiledning
Full-stack-utvikler

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.

Utforsk våre profesjonell WordPress-utvikling for å ta prosjektet ditt videre.

Neste steg

Gjor artikkelen om til faktisk implementering

Denne blokken styrker intern lenking og sender leseren videre til de mest relevante tjenestene og innholdet.

Vil du fa dette implementert pa nettstedet ditt?

Hvis du vil gjore kunnskapen i artikkelen om til konkrete forbedringer, redesign eller en tydelig leveranseplan, kan jeg ta det videre.

Relevant klynge

Utforsk andre WordPress-tjenester og kunnskapsbase

Styrk virksomheten din med profesjonell teknisk støtte innen kjerneområdene i WordPress-økosystemet.

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

Funksjonen get_post_meta() jest grunnleggende. Lær hvordan du henter, viser og administrerer data fra egendefinerte felter i temaet ditt. Avansert guide for utviklere.
development

Hvordan vise egendefinerte felter i WordPress (2026-guide)

Funksjonen get_post_meta() jest grunnleggende. Lær hvordan du henter, viser og administrerer data fra egendefinerte felter i temaet ditt. Avansert guide for utviklere.

Slutt å skrive rotete if-setninger. Lær forskjellen på in_category og has_term, hvordan håndtere rekursive barnekategorier effektivt, og optimaliser dine conditional tags.
development

WordPress betinget logikk for kategorier og taksonomier

Slutt å skrive rotete if-setninger. Lær forskjellen på in_category og has_term, hvordan håndtere rekursive barnekategorier effektivt, og optimaliser dine conditional tags.

Mestre WordPress Loop. Lær å skrive ytelsesvennlige WP_Query-argumenter, unngå SQL-feller og paginere tilpassede loops korrekt.
development

Den definitive guiden til wp_Query & the loop (2026-utgave)

Mestre WordPress Loop. Lær å skrive ytelsesvennlige WP_Query-argumenter, unngå SQL-feller og paginere tilpassede loops korrekt.