Wie überprüfe ich, ob ein bestimmter untergeordneter Begriff Beiträge mit einem anderen Satz untergeordneter Begriffe innerhalb derselben Taxonomie geteilt hat?

Ich arbeite an einer Website für Fotografie, die Easy Digital Downloads verwendet. Wenn Sie nicht vertraut sind, hat es einen benutzerdefinierten Post-Typ namens Download und eine benutzerdefinierte Taxonomie namens Download Category .

Innerhalb dieser Taxonomie habe ich ein paar hochstufige Begriffe wie Scene , Costume , Model usw.

Auf meiner Homepage habe ich eine Liste aller Ball Gowns ( Ball Gowns , Ball Gowns , etc.). Wenn ein Benutzer auf einen dieser Begriffe klickt, wird er in meine taxonomy-download_category.php Vorlage übernommen, wo er ein Raster aller Bilder in diesem Begriff sehen kann. Wenn sie Ball Gowns auf der Ball Gowns auf Ball Gowns klicken, sehen sie alle Downloads, die mit dem Begriff ” Ball Gowns .

Ich versuche, eine function am Anfang meiner taxonomy-download_category.php Datei hinzuzufügen, die eine Liste von Modellen anzeigen wird, die in jedem beliebigen untergeordneten Costume gefunden werden können. Wenn Sie im obigen Beispiel auf der Seite mit den Ball Gowns gelandet sind, sehen Sie eine Liste an der Spitze der 5 Modelle (von 9) mit Downloads in der Kategorie Ball Gowns .

Das Problem, auf das ich stoße, ist, dass Models kein benutzerdefinierter Beitragstyp ist, sondern ein Geschwisterbegriff für Costumes unter der Taxonomie der Download Category .

Die einzige mögliche Lösung, an die ich bisher gedacht habe, ist:

  1. Besorgen Sie sich alle Beiträge, die an eines der Models von Models angehängt sind
  2. Durchlaufen Sie jeden dieser Posts und sehen Sie sich an, welche auch im aktuellen Unterbegriff ” Costumes des Benutzers kategorisiert werden, indem Sie ein Array von term_ids für jeden erstellen.
  3. Verwenden Sie das Array, das ich erstellt habe, um meine Liste auszugeben.

Das Problem damit ist:

a) Es scheint eine Menge Logik für etwas zu sein, das einfacher zu sein scheint.

b) Mein aktueller Code funktioniert nicht. Die Variable filtered_models wird als leeres Array zurückgegeben.

“ `

  // Get all models $models = get_term_children(204, 'download_category'); $filtered_models = []; // Get ready to query all posts under the Models term $args = array( 'posts_per_page' => -1, 'orderby' => 'ASC', 'post_type' => 'download', 'download_category' => 'models', 'post_status' => 'publish' ); // Query the posts $all_models_posts = new WP_Query( $args ); if ( $all_models_posts->have_posts() ) { while (have_posts()){ the_post(); // See which model(s) this post is attached to $model_term_args = array( 'taxonomy' => 'download_category', 'parent' => 204 ); $matched_models = wp_get_post_terms( $model_term_args ); foreach($matched_models as $matched_model) { if(has_term('download_category', $term)){ $filtered_models[] = $matched_model; } } } } // Reset the query wp_reset_query(); ?> 

“ `

Ich habe stundenlang im Codex nach einer function gesucht, die möglicherweise Kindbegriffe auflisten kann, die Beiträge zwischen einem anderen untergeordneten Begriff geteilt haben, aber meine Suchanfragen sind kurz gekommen. Existiert eine solche function?

Vielen Dank im Voraus für Ihre Hilfe!

Edit: Hier ist eine visuelle Hierarchie der Taxonomie:

  • Kategorie herunterladen (Taxonomie)
    • Kostüme
      • Tageskleider
      • Ballkleider
    • Modelle
      • Bernstein
      • Bretagne
      • Megan

AKTUALISIEREN:

Ich erkannte, warum mein $filtered_models Array nach der foreach Schleife leer war – weil ich wp_get_post_terms aber die Argumente nicht korrekt lieferte. Nachdem wp_get_post_terms näher betrachtet habe, scheint es nicht möglich zu sein, bestimmte get_term_children Begriffe auszuwählen, also entschied ich mich, zu get_term_children zu get_term_children . Ich erhalte jetzt einen Fehler (Screenshot: http://files.builtbygood.co/pG3L/5lwBxULw ), aber ich denke immer noch über diesen Fortschritt nach.

Hier ist der aktualisierte Code:

“ `

  // Get ready to query all posts under the Models term $args = array( 'posts_per_page' => -1, 'orderby' => 'ASC', 'post_type' => 'download', 'download_category' => 'models', 'post_status' => 'publish' ); // Query 'dem posts! $all_models_posts = new WP_Query( $args ); if ( $all_models_posts->have_posts() ) { while (have_posts()){ the_post(); // Get all models $models = get_term_children(204, 'download_category'); $filtered_models = []; var_dump($models); foreach($models as $model) { if(has_term('download_category', $term)){ $filtered_models[] = $matched_model; } } } } // Reset that query wp_reset_query(); ?> 

“ `

Jede Hilfe wird sehr geschätzt!

Solutions Collecting From Web of "Wie überprüfe ich, ob ein bestimmter untergeordneter Begriff Beiträge mit einem anderen Satz untergeordneter Begriffe innerhalb derselben Taxonomie geteilt hat?"

Sie erhalten auf jeden Fall eine Menge von dem, was ich glaube, alle Modelle, aber Sie sollten in der Lage sein, has_term zu verwenden, wie Sie es getan haben, aber mit der Variablen $ model als was zu prüfen ist. $ model sollte die ID-Nummer für die Kategorien sein, die Sie sehen.

Und dann benutze einfach get_cat_name, indem du $ modell eingibst. Ich bin ratlos, wenn das nicht funktioniert.

 // Get ready to query all posts under the Models term $args = array( 'posts_per_page' => -1, 'orderby' => 'ASC', 'post_type' => 'download', 'download_category' => 'models', 'post_status' => 'publish' ); // Query 'dem posts! $all_models_posts = new WP_Query( $args ); if ( $all_models_posts->have_posts() ) { while (have_posts()){ the_post(); // Get all models $models = get_term_children(204, 'download_category'); foreach($models as $model) { if(has_term($model, 'download_category')){ echo get_cat_name($model); } } } } // Reset that query wp_reset_query(); ?>