Benutzerdefinierte Schleife mit mehreren Taxonomieabfragen

Entschuldigung – neu beim Stackexchange und tatsächlich in Stack Overflow veröffentlicht, weil ich nicht wusste, dass es ein WP-spezifisches Gelenk gab.

Mein Problem–

Was ich habe: Ich habe den Code für eine Liste der Arbeitsereignisse. Es gibt einen einzigen benutzerdefinierten Post (Ereignisse) und drei Taxonomien (Ort, Monat, Typ). Der folgende Code listet zukünftige Ereignisse auf und sortiert sie nach einem benutzerdefinierten Feld (start_date). Die Ereignisliste ist auch nach Taxonomie sortierbar. Zum Beispiel können Sie nur Ereignisse im Dezember (Monat) oder für Ereignisse nach Standort (Montana) betrachten.

Was ich nicht herausfinden kann: Wie man Listen nach zwei verschiedenen Taxonomien sortiert. Zum Beispiel: Ereignisse im Dezember (Monat), die auch in Montana (Standort) sind. Es scheint nur das eine oder andere auszuwählen.

Andere Info: Wenn Sie die Standard-Wordpress-Schleife verwenden, nicht die benutzerdefinierte unten, gibt es kein Problem mit mehreren Abfragen mit dieser CPT und Taxonomien, aber natürlich, es veröffentlicht jedes Ereignis, das jemals passiert ist, einschließlich der in der Vergangenheit.

Auch das ist meine erste wp_query, also hoffe ich, dass es etwas offensichtlich ist.

Datei: (archives-events.php)

 'events', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'location', 'terms' => $term, ), array( 'taxonomy' => 'month', 'terms' => $term, ), array( 'taxonomy' => 'type', 'terms' => $term, )), 'posts_per_page' => 10, 'meta_compare' => '>', 'meta_value' => $today, 'orderby' => 'meta_value', 'meta_key' => 'start_date', 'order' => 'ASC', 'paged'=> $paged, )); ?> have_posts() ) : while ($my_query->have_posts() ) : $my_query->the_post();?>   

Solutions Collecting From Web of "Benutzerdefinierte Schleife mit mehreren Taxonomieabfragen"

Hier ist eine function, um eine Abfrage mit mehreren Taxonomien durchzuführen:

 function posts_search ($post_type,$taxonomies) { // $taxonomies should be an array ('taxonomy'=>'term', 'taxonomy2'=>'term2') foreach ($taxonomies as $key=>$value) { $args=array('post_type'=>$post_type,'post__in'=>$ids,$key=>$value); unset($ids); $ids=array(); foreach($posts=get_posts($args) as $post) { $ids[]=$post->ID; } if (empty($ids)) return false; } return $posts; } 

Und hier ist ein Beispiel, wie ich es in einem früheren Projekt verwendet habe:

 $posts = posts_search ('produtos',array('prod-categoria'=>'blocos','prod-cols'=>'7-c')); if($posts) { foreach($posts as $post) { // show infos from the post... } } 

Der produtos ist der benutzerdefinierte Beitragstyp, auf dem ich die Suche mache, prod-categoria und prod-cols sind zwei benutzerdefinierte Taxonomien und blocos und 7-c sind zwei Begriffe aus den vorherigen benutzerdefinierten Taxonomien.

Ich hoffe, das hilft.

OBS1; Die function stammt nicht von mir, wohl aber von einer alten Post hier. OBS2; Dies war funktional auf einer 3.1.2 Installation.