Vergleichen Sie zwei benutzerdefinierte Beitragstypen mit derselben benutzerdefinierten Taxonomie

Ich habe zwei Post-Typen, Kurse und Testimonials , die dieselben Taxonomien teilen. Was ich erreichen möchte, ist zu überprüfen, ob ein Kurs in der gleichen Kategorie wie ein Testimonial ist. Dann zeigen Sie, wenn es ist, unter Berücksichtigung, dass sie mehr als eine Kategorie haben könnten.

Ich bin derzeit in der Lage, zu überprüfen, in welchen Kategorien sie get_the_term_list() , kann aber nicht herausfinden, wie man sie miteinander vergleicht.

Was ich brauche, ist in der Lage zu überprüfen, ob die Kategorien, die in pm_course (post-type) abgehakt wurden, dieselben sind wie course_testimonials (post-type). Wenn sie dieselbe Kategorie haben, möchte ich das Zeugnis anzeigen, wenn nicht, möchte ich nichts tun.

Wirklich eine grundlegende if else Aussage, aber ich kann nicht scheinen, einen Weg zu finden, zu sehen, ob die überprüften Kategorien in beiden gleich sind.

Solutions Collecting From Web of "Vergleichen Sie zwei benutzerdefinierte Beitragstypen mit derselben benutzerdefinierten Taxonomie"

Verwenden Sie nicht get_the_term_list() da es eine HTML-Zeichenfolge zurückgibt, die das Vergleichen erschwert.

Verwenden wp_get_post_terms() stattdessen wp_get_post_terms() ( Codex-Verknüpfung ). Es kann ein Array zurückgeben, und dann können Sie etwas wie array_intersect() , um die übereinstimmenden Begriffe zu erhalten.

Ihr Code sollte ungefähr so ​​aussehen (ich habe das nicht getestet):

 $course_terms = wp_get_post_terms($course_post_id, 'course_type'. array('fields'=>'slug')); $testimonial_terms = wp_get_post_terms($testimonial_post_id, 'course_type'. array('fields'=>'slug')); $matches = array_intersect($course_terms, $testimonial_terms); if (count($matches) > 0) echo "matching terms";