Logik ist das Gehirn Ihres Themes. In 2026, trotz Full Site Editing (FSE), ist PHP-Logik nicht obsolet.
Ein häufiger Fehler ist die Verwechslung von in_category() mit has_term().
Dieser 1500-Wörter-Guide etabliert die Standard Operations Procedures (SOP) für moderne WordPress-Logik.
Teil 1: Die Grundlagen - Kategorien prüfen
1. in_category()
Nutzen Sie dies STRENG nur für die native “Kategorie”.
if ( in_category( 'news' ) ) {
// News Post
}
Warnung: Prüft nicht auf Custom Taxonomies (wie ‘product_cat’ in WooCommerce).
2. has_term() (Das Universal-Tool)
Sie sollten fast immer has_term() bevorzugen.
// Prüfe ob Post im Term 'jeans' der Taxonomie 'product_cat' ist
if ( has_term( 'jeans', 'product_cat' ) ) {
// Jeans
}
Teil 2: Hierarchie-Komplexität (Kind & Eltern)
Native Funktionen prüfen auf exakte Übereinstimmung.
Wenn Sie in_category('obst') prüfen, der Post aber nur in apfel ist, schlägt der Test fehl.
Die Lösung: post_is_in_descendant_category()
WordPress hat keine native rekursive Check-Funktion im Core. Sie brauchen eine Helper-Funktion.
function wppoland_post_is_in_descendant_category( $cats, $_post = null ) {
// Helper Logik hier (siehe Code-Beispiel im Englischen/Polnischen Teil)
// Nutzt get_term_children für Rekursion
}
Teil 3: Conditional Tags in 2026
PHP-Bedingungen sind vital für:
- Assets laden: Schwere JS-Dateien nur konditional laden.
- Content Filter: Disclaimer nur bei bestimmten Kategorien anhängen.
Teil 4: Performance
Datenbank-Impact
Jeder has_term Aufruf nutzt den Object Cache. Es ist schnell (O(1)).
Aber get_term_children kann bei riesigen Taxonomien teuer sein.
Teil 5: WooCommerce Spezifika
Häufiger Fehler: Nutzung von is_product_category() innerhalb eines normalen Loops.
Das funktioniert nicht. Nutzen Sie has_term( $term, 'product_cat', $post_id ).
Zusammenfassung
- Nutzen Sie
has_term()für Robustheit. - Nutzen Sie Helper-Funktionen für Rekursive Checks.
- Unterscheiden Sie Seiten-Kontext (
is_category()) von Post-Daten (in_category()).

