WP_Query verwenden, um Ergebnisse mithilfe eines Datums erneut abzufragen und zu sortieren?

Ich schreibe eine function, um das nächste kommende Ereignis (gespeichert als CPT) chronologisch zu finden.

Wenn ich eine normale Abfrage verwende und sowas mache

'post_type' => 'ticket', // another CPT set up to act as ticket 'orderby' => 'meta_value_num', 'meta_key' => 'event_date', // currently just Ymd but can be changed to unix / whatever if neccesary. 'order' => 'ASC', 'posts_per_page' => 1, // changing to -1 to get all tickets 'meta_query' => array( array( 'key' => 'member', 'value' => $user_id //user ID stored as meta on ticket CPT ), array( 'key' => 'state', 'value' => 'complete' // to make sure is a confirmed & paid ticket ) ) 

Das findet den ticket , der chronologisch in der Liste zuletzt ist, dh. das “Most Future” -Event.

Was ich dann gerne tun würde, ist einen Filter durch die Ergebnisse zu setzen, um alle Tickets zu entfernen, die vor dem heutigen $event_date >= date("Ymd") liegen ( ich habe vorher verwendet, wenn $event_date >= date("Ymd") )

Dann von diesen Ergebnissen eine entgegengesetzte oder eine separate orderby , um das erste bevorstehende Ereignis zu erhalten.

Bitte kommentieren Sie, wenn Sie weitere Informationen benötigen. Gerne fügen Sie jedem zusätzlichen Code, den Sie brauchen, ein.

Solutions Collecting From Web of "WP_Query verwenden, um Ergebnisse mithilfe eines Datums erneut abzufragen und zu sortieren?"

Danke für die Antworten,

Erlaubt mir, die richtige Antwort zu finden, die ich unten gepostet habe –

 $tickets_for_user = get_posts(array( 'post_type' => 'ticket', 'orderby' => 'meta_value_num', 'meta_key' => 'event_date', 'order' => 'ASC', 'posts_per_page' => 1, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'event_date', 'value' => array($today,'20991231'), 'compare' => 'BETWEEN', 'type' => 'DATE', ), array( 'key' => 'member', 'value' => $user_id ), array( 'key' => 'state', 'value' => 'complete' ), ) )); $tickets = array(); foreach($tickets_for_user as $ticket) { 

Wichtiger Hinweis aus dem Codex:

Der ‘type’ DATE arbeitet nur dann mit dem ‘compare’-Wert BETWEEN, wenn das Datum im Format YYYYMMDD gespeichert und mit diesem Format getestet wird.

Sie müssen auch die Daten in der Reihenfolge ablegen, wobei die frühesten zuerst im Array erscheinen.