Logikk er hjernen i temaet ditt. I 2026, til tross for Full Site Editing (FSE), er PHP-logikk ikke utdatert.
En vanlig feil er å forveksle in_category() med has_term().
Denne guiden på 1500 ord etablerer Standard Operating Procedures (SOP) for moderne WordPress-logikk.
Del 1: Det grunnleggende - Sjekke kategorier
1. IN_category()
Bruk denne KUN for den innebygde “Kategori”-taksonomien.
if ( in_category( 'nyheter' ) ) {
// Nyhetspost
}
Advarsel: Sjekker ikke custom taxonomies (som ‘product_cat’ i WooCommerce).
2. Has_term() (det universelle verktøyet)
Du bør nesten alltid foretrekke has_term().
// Sjekk om posten er i 'jeans' i 'product_cat'
if ( has_term( 'jeans', 'product_cat' ) ) {
// Det er en jeans.
}
Del 2: Hierarkiets kompleksitet (barn og foreldre)
Natives funksjoner sjekker nøyaktig treff.
Hvis du sjekker in_category('frukt'), men posten bare er i eple, feiler sjekken.
Løsningen: Post_is_in_descendant_category()
WordPress har ingen innebygd rekursiv sjekk i kjernen. Du trenger en hjelpefunksjon.
function wppoland_post_is_in_descendant_category( $cats, $_post = null ) {
// Hjelpelogikk som bruker get_term_children
}
Del 3: Conditional tags i 2026
PHP-betingelser er vitale for:
- Laste ressurser: Last tung JS kun ved behov.
- Innholdsfiltrering: Legg til disclaimers automatisk.
Del 4: Ytelse
Databasepåvirkning
Hvert has_term-kall bruker Object Cache. Det er raskt (O(1)).
Men get_term_children kan være dyrt ved enorme taksonomier.
Del 5: WooCommerce-spesifikt
Vanlig felle: Å bruke is_product_category() inne i en standard Loop.
Det fungerer ikke. Bruk has_term( $term, 'product_cat', $post_id ).
Oppsummering
- Bruk
has_term()for robusthet. - Bruk hjelpefunksjoner for Rekursive sjekker.
- Skill mellom Sidekontekst (
is_category()) og Postdata (in_category()).

