Wie verwende ich Taxonomiebegriffe auf der Grundlage von Begriffen, die neben ihnen verwendet werden?

Wie bekomme ich alle einzelnen Taxonomieregeln, die einen oder mehrere bestimmte Geschwisterausdrücke haben?

Nehmen wir zum Beispiel an, ich habe die folgenden Taxonomien. Terms sind unterhalb der Taxonomien aufgelistet, und die Klammern geben an, auf welchen Posts die Terms verwendet werden.

Alter Taxonomie

  • sechzehn (für 3 Beiträge)
  • siebenundzwanzig (verwendet auf 0 Pfosten)
  • vierunddreißig (verwendet auf 12 Pfosten)

eye_color Taxonomie

  • Blau (für 5 Beiträge)
  • Braun (bei 10 Posts verwendet)
  • Grün (für 0 Beiträge)

Mein Wunsch ist es, eine Liste aller Begriffe in eye_color , die:

  1. habe Beiträge
  2. werden zusammen mit thirty-four auf einem oder mehreren Posts verwendet

Natürlich weiß ich, dass get_terms () ein hide_empty Argument hat, aber das macht nur die Hälfte von dem, was ich will.

UPDATE: Ein Kommentar unten verlinkt auf eine function, die es Ihnen erlaubt, Begriffe zu finden, die auf Geschwister-Begriffen einer einzelnen Taxonomie basieren … aber ich möchte Begriffe finden, die auf Geschwister-Begriffen mehrerer Taxonomien basieren.

Im Klartext möchte ich im Grunde:

Wählen Sie alle Begriffe aus der taxonomy A , die für einen Beitrag mit Term 1 from Taxonomy B und Term 2 from Taxonomy C .

Irgendwelche Ideen?

Solutions Collecting From Web of "Wie verwende ich Taxonomiebegriffe auf der Grundlage von Begriffen, die neben ihnen verwendet werden?"

Also meine Lösung für diese Art von Problemen, wo wir eine sehr komplexe Reihe von Regeln haben, ist es, zu vermeiden, neue SQL nur für meine Lösung zu tun, denn wenn Sie es einem Anfänger erklären müssen, wird es haarig.

Meine Lösung:

 function get_term_union( $taxonomy, $tax_query, $post_type = 'post' ){ $args = array( 'post_type' => $post_type, 'tax_query' => $tax_query, 'fields' => 'ids', ); $posts = new WP_Query( $args ); $terms = array(); foreach( $posts as $post_id ){ $terms = array_merge( $terms, wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'ids' ) ) ); } $terms = array_unique( $terms ); return $terms; } // Usage $tax_query = array( 'relation' => 'AND', array( 'taxonomy' => 'taxonomy_B', 'field' => 'slug', 'terms' => 'term_A', ), array( 'taxonomy' => 'taxonomy_C', 'field' => 'slug', 'terms' => 'term_B', ), ); // This will return you all the term id's for `taxonomy_A` var_dump( get_term_union( 'taxonomy_A', $tax_query ) ); 

Wenn diese Lösung nicht Ihren Anforderungen entspricht, sagen Sie es mir und ich werde versuchen, es zu beheben.

Meine besten Grüße,