$ wpdb fragt einen Post-Typ innerhalb eines bestimmten Taxonomie-Terms ab, während er Beiträge nach einem benutzerdefinierten Meta-Wert sortiert?

Ich habe einen benutzerdefinierten Beitragstyp ‘event’, ein benutzerdefiniertes Meta-Feld ‘event_date’ und eine benutzerdefinierte Taxonomie ‘locations’.

Ich möchte $ wpdb abfragen, um Posts auf diese Weise zu erhalten

  1. Posts müssen vom Post-Typ “Event” sein
  2. ‘Ereignisse’ müssen mit einem bestimmten $ location-Begriff innerhalb der ‘locations’-Taxonomie verknüpft sein
  3. Ergebnisse müssen durch den benutzerdefinierten Metawert “event_date” (der eigentlich ein Datum im Format yymmdd ist) im Vergleich zum heutigen aktuellen Datum angeordnet werden

Ich versuche mit den folgenden Abfrageparametern (ich kann den $ location Wert – entweder ID oder Slug – korrekt erhalten und an diese Abfrage übergeben):

SELECT $wpdb->posts.* LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) FROM $wpdb->posts, $wpdb->postmeta WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->terms.term_id = $location AND $wpdb->term_taxonomy.taxonomy = 'locations' AND $wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->posts.post_type = 'event' AND $wpdb->posts.post_status = 'publish' AND $wpdb->postmeta.meta_key = 'event_date' AND $wpdb->postmeta.meta_value > NOW() ORDER BY $wpdb->postmeta.meta_value ASC LIMIT $numberofposts 

Die Abfrage funktioniert nicht. Wenn ich den JOIN-Teil und den Taxonomie-Teil entferne, funktioniert es, und alle Ergebnisse werden geordnet, indem ‘event_date’ meta mit NOW () date verglichen wird.

Ich schätze, ich mache es falsch mit der Taxonomie Teil …

Wie empfohlen, habe ich versucht, eine WP_Query- statt eine $ wpdb-Abfrage auszuführen:

 $args = array( 'post_type' => 'event', 'tax_query' => array( array( 'taxonomy' => 'locations', 'field' => 'id', 'terms' => $location // location term id ) ), 'meta_key' => 'event_date', // this meta field stores event date in yymmdd format 'meta_value' => $today, // this would be today's date in yymmdd format 'meta_compare' => '>=', 'posts_per_page' => $numberofposts, // this variable stores the number of posts I want to get 'orderby'=> 'meta_value_num' ); 

Im letzteren Fall gibt die Abfrage jedoch ALLE Posts unter dem angegebenen post_type zurück, unabhängig von anderen Spezifikationen innerhalb von $ args einschließlich der Sortierreihenfolge

Ich habe versucht, Meta_Query anstelle von Meta_key verwenden, aber das Ergebnis ändert sich nicht

Solutions Collecting From Web of "$ wpdb fragt einen Post-Typ innerhalb eines bestimmten Taxonomie-Terms ab, während er Beiträge nach einem benutzerdefinierten Meta-Wert sortiert?"

Sie haben einen Tipperrors in der orderby , und meta_value_num wird nur als eine orderby Wert verwendet, versuchen Sie orderby :

 $args = array( 'post_type' => 'event', 'tax_query' => array( array( 'taxonomy' => 'locations', 'field' => 'id', 'terms' => $location // location term id ) ), 'meta_key' => 'event_date', // this meta field stores event date in yymmdd format 'meta_value' => $today, // this would be today's date in yymmdd format 'meta_compare' => '>=', 'posts_per_page' => $numberofposts, // this variable stores the number of posts I want to get 'orderby'=> 'meta_value_num' );