Beste Methode zum Wechseln zwischen Termen (benutzerdefinierte Taxonomie)

Ich möchte hier etwas lernen.

Mit dem folgenden Code lade ich eine externe Datei für jede Bedingung basierend auf einem bekannten Satz von benutzerdefinierten Begriffen. Ich verwende has_terms, um nach einem bestimmten Wert in der benutzerdefinierten Steuer ‘delivery_option’ zu suchen.

$taxonomy = 'delivery_option'; if(has_term( 'public-delivery', $taxonomy ) ){ include_once( CHILD_THEME_DIR . '/includes/sidebar-part-public.php'); } elseif (has_term('onsite-delivery', $taxonomy ) ){ include_once( CHILD_THEME_DIR . '/includes/sidebar-part-onsite.php'); } elseif (has_term('online-delivery', $taxonomy ) || has_term('self-directed-delivery', $taxonomy ) ){ include_once( CHILD_THEME_DIR . '/includes/sidebar-part-online.php'); } else { echo '

No custom include!

' }

Es klappt. Aber ist dies der beste / effizienteste Weg dies zu tun? Ich überlegte, ob ich möglicherweise einen ‘Schalter‘ verwenden könnte, aber ich bin mir nicht sicher, wie das funktionieren würde. ‘Has_term’ scheint viel effizienter zu sein als eine Methode, die Termobjekte zurückgibt, bevor sie geprüft werden.

Diese Begriffe sind hierarchisch und sollten sich gegenseitig ausschließen. Jeder Post hat eine Zustelloption.

Rat? Auf der Suche nach Best-Practice-Empfehlung oder Bestätigung, dass ich nicht aus der Reihe bin. 🙂

Solutions Collecting From Web of "Beste Methode zum Wechseln zwischen Termen (benutzerdefinierte Taxonomie)"

Wenn ich Ihren Code und Ihre Beschreibung richtig lese, können Sie Folgendes vereinfachen:

 $taxonomy = 'delivery_option'; $do = get_the_terms($post->ID,$taxonomy); if (!empty($do) && !is_wp_error($do)) { $do = array_shift($do); // assuming a single value as per the description. $term = str_replace('-delivery','',$do->slug); get_template_part('includes/sidebar-part',$term); } else { echo '

No custom include!

'; }

Beachten Sie, dass ich get_template_part() von WordPress anstelle von get_template_part() include() da dies die korrektere Methode zum get_template_part() von Vorlagendateien ist.