Das Filtern einer WP_Query-Metaabfrage nach numerischen Werten funktioniert nicht

Das war ein sehr dichter Titel.

Ich habe einen benutzerdefinierten Post-Typ “Ereignis”, der ein Datum / Uhrzeit-Auswahlfeld “event_date” dank des Advanced Custom Fields-Plugins hat. Diese Datums- / Uhrzeitauswahl speichert einen UNIX-Zeitstempel in der database. Ich versuche WP_Query zu verwenden, um alle Ereignisse zu erhalten, die heute oder in der Zukunft sind. Dies ist der Code, den ich gerade habe:

$args = Array( 'post_type' => 'event', 'posts_per_page' => -1, 'meta_key' => 'event_date', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_query' => array( 'key' => 'event_date', 'compare' => '>=', 'value' => intval(strtotime(date('Ym-d'))), 'type' => 'numeric' ), ); $query = new WP_Query( $args ); 

Es gibt mir alle Ereignisse, Vergangenheit und Zukunft.

Ich merke, dass die Zeitstempel als Strings in der database gespeichert sind, also ‘compare’ => ‘> =’ normalerweise nicht funktionieren würde, aber was ich bei Google gelesen habe und im Codex ‘type’ => ‘numeric’ sollte die Zeichenfolge in eine Ganzzahl umwandeln und es mit meinem Wert von heute Morgen um Mitternacht vergleichen lassen. Leider scheint das nicht zu funktionieren und ich verstehe nicht warum.

Solutions Collecting From Web of "Das Filtern einer WP_Query-Metaabfrage nach numerischen Werten funktioniert nicht"

Probieren Sie ein Array von Arrays in Ihrer Meta-Abfrage aus.

 $args = Array( 'post_type' => 'event', 'posts_per_page' => -1, 'meta_key' => 'event_date', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'event_date', 'compare' => '>=', 'value' => intval(strtotime(date('Ym-d'))), 'type' => 'numeric' ) ), ); $query = new WP_Query( $args ); 

Woa, du hast meinen Tag mit dieser Antwort gespeichert, ich habe versucht, Beiträge nach dem benutzerdefinierten numerischen Feld namens type_price zu filtern, und ich habe versucht, es so zu machen:

 'meta_query' => array( array( 'key' => 'type_price', 'value' => array( 0, 500000 ), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', )), 

aber es sollte so sein, um es zu tun ASC:

 array( 'posts_per_page' => -1, 'meta_key' => 'type_price', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'type_price', 'value' => array( 0, 500000 ), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ) )), 

Danke vielmals 🙂