Wie bekomme ich alte Posts statt neuer mit WP_Query?

Ich mache eine WP_Query mit einem date_query Parameter after , und ich möchte den nächsten Post nach diesem Datum , aber ich bekomme die meisten in der Zukunft von dem Datum. Gibt es einen Parameter, um dies zu kontrollieren? etwas wie 'near_to' => 'past/future' , oder WP_Query immer die neuesten? Das ist mein Code:

 $my_query = new WP_Query(array( 'post_type' => 'event', 'posts_per_page' => 1, 'date_query' => array( 'after' => date('Ymd h:i',time()) ) )); 

Ich habe eine Veranstaltungsseite, und ich möchte die nächste Seite zeigen, nicht die weiteste.

Ignorieren Sie die Tatsache, dass das überprüfte Datum heute ist und der Post, nach dem ich suche, in der Zukunft liegt. Es ist egal (nein?).

Ich habe im Codex gesucht, aber ich habe nichts gefunden. Muss ich nach ALL Post $my_query->posts und zum letzten im $my_query->posts Array gehen?

Edit: Ich möchte nicht meine Ergebnisse bestellen, ich möchte sie durch ältere Beiträge, nicht nach dem neuesten zu begrenzen (Standard). Ich habe mehrere Posts mit einem zukünftigen Datum (Ereignisse), und ich möchte das nächste Ereignis. Wenn ich eine Abfrage mit nur diesem Parameter 'posts_per_page' => 1 bekomme ich den neuesten Post, und ich möchte den ältesten.

Vielen Dank!


Die Lösung besteht darin, den Parameter 'order' => 'ASC' . Danke an @PieterGoosen und @webtoure. Lassen Sie mich nun erklären, warum meine Frage nicht zu 100% richtig war und warum sie funktioniert.

Ich habe nicht mit 'order' getestet 'order' weil ich nur einen falschen Post habe (das dachte ich mir), ich hatte nichts zu bestellen, aber WP_Query funktioniert nicht so . Wie ich selbst in dieser Antwort erklärt habe , findet WP_Query zuerst die Posts, die den Kriterien entsprechen, bestellt sie dann, WP_Query die WP_Query usw. Sie können also nach Posts 'after' einem Datum (alle von ihnen), Reihenfolge danach 'ASC' suchen 'ASC' , und bekomme nur 1 Beitrag mit 'posts_per_page' => 1 .

Solutions Collecting From Web of "Wie bekomme ich alte Posts statt neuer mit WP_Query?"

Verwenden Sie tatsächlich 'after' => date('Ymd h:i',time()) in Ihrem Code? Das wird immer nach älteren Posts fragen, die genau die aktuelle Uhrzeit angeben, zu der diese Abfrage ausgeführt wird. Etwas wie das:

 'after' => date( 'Ymd h:i', time() - 60 * 60 * 24 ) 

würde Ihnen eine Referenz für 24 Stunden in der Vergangenheit geben.

Der obige Teil ist der Geschichte zuliebe. Die Lösung in dieser Antwort ist und war aber die ganze Zeit richtig.

Da die Ergebnisse “Backwords” sind (von neu nach alt anstatt umgekehrt), möchten Sie vielleicht eine Bestellklausel zu Ihrem Snippet hinzufügen (ich habe es nicht getestet):

 $my_query = new WP_Query( array( 'post_type' => 'post', 'order' => 'ASC', 'posts_per_page' => 1, 'date_query' => array( array( 'after' => date( 'Ymd h:i', time() ), ) ), ) ); 

Letzte Änderung (getestet und funktioniert). Sie benötigen die Bestellklausel, da WordPress standardmäßig ‘DESC’ abfragt. Testen Sie den Code und sehen Sie selbst.