WP_Query für Posts, für die Postmeta einer Taxonomie zugewiesen ist

Da wir nicht die Standardvorlage dafür enthäuten oder verwenden, sind wir in einige Schwierigkeiten geraten, aber wir sind an einem Punkt, an dem wir im Projekt zu weit weg sind, um umzukehren. Ich habe noch nie eine WP_Query so gemacht, aber zwei Dinge um zu skizzieren, wie es strukturiert ist.

  1. Ich tribe_events den Beitragstyp tribe_events in dem postmeta Schlüssel _VenueCity , _VenueState und _VenueCountry gleich sind und Werte der GET / POST Anforderung gleich sind.
  2. Die postmeta ist der tribe_venue Taxonomie zugeordnet, was es für mich tribe_venue macht, die postmeta direkt abzufragen, da sie nicht direkt mit dem post-Typ tribe_events .

Ich habe viele Dinge ausprobiert, aber das ist, was von meinen vielen verschiedenen Bemühungen übrig geblieben ist.

 <?php // Support for multiple locations to be filtered. $request_cities = array_map(function($item){return utf8_decode(urldecode($item));}, explode('+', $_REQUEST['city'])); $request_states = array_map(function($item){return utf8_decode(urldecode($item));}, explode('+', $_REQUEST['state'])); $request_countries = array_map(function($item){return utf8_decode(urldecode($item));}, explode('+', $_REQUEST['country'])); // If the event only has 1 item convert to string. if (is_array($request_cities) && count($request_cities) <= 1) { $request_cities = implode("|", $request_cities); } if (is_array($request_states) && count($request_states) <= 1) { $request_states = implode("|", $request_states); } if (is_array($request_countries) && count($request_countries)  '_VenueCity', 'value' => $request_cities ], [ 'key' => '_VenueState', 'value' => $request_states ], [ 'key' => '_VenueCountry', 'value' => $request_countries ], 'relation' => 'AND' ]; $event_args['tax_query'] = [ [ 'taxonomy' => 'tribe_venue', 'field' => 'term_id', 'terms' => $request_cities ] ]; $events = tribe_get_events($event_args); ?> 

Wenn mir jemand helfen könnte, das herauszufinden, wäre ich an dieser Stelle nicht dankbar, weil ich so viel Zeit damit verbracht habe, das herauszufinden.

Solutions Collecting From Web of "WP_Query für Posts, für die Postmeta einer Taxonomie zugewiesen ist"

So fand ich die Lösung nach vielen Suchen auf der Website des Veranstaltungskalenders und änderte sie nach meinen Bedürfnissen. Der Code ist wie folgt: (Hinweis: Ich habe auch die Array-String-Konvertierung entfernt, da dies ziemlich sinnlos ist.)

 < ?php // Support for multiple locations to be filtered. $request_cities = array_map(function($item){return utf8_decode(urldecode($item));}, explode('+', $_REQUEST['city'])); $request_states = array_map(function($item){return utf8_decode(urldecode($item));}, explode('+', $_REQUEST['state'])); $request_countries = array_map(function($item){return utf8_decode(urldecode($item));}, explode('+', $_REQUEST['country'])); //Retrieve venues that match query criteria $args = [ 'nopaging' => true, 'post_type' => 'tribe_venue', 'meta_query' => [ [ 'key' => '_VenueCity', 'value' => $request_cities, 'compare' => 'IN', ], [ 'key' => '_VenueState', 'value' => $request_states, 'compare' => 'IN', ], [ 'key' => '_VenueCountry', 'value' => $request_countries, 'compare' => 'IN', ], 'relation' => 'AND' ] ]; $venues = get_posts($args); $venue_ids = wp_list_pluck($venues, 'ID'); wp_reset_postdata(); $event_args[] = [ 'meta_query' => [ [ 'key' => '_EventVenueID', 'value' => $venue_ids, 'compare' => 'IN', ] ], 'paged' => $paged ]; $events = tribe_get_events($event_args); ?> 

Quelle: https://theeventscalendar.com/support/forums/topic/events-list-with-filter-by-venue-in-custom-template/#post-1290489