it-swarm.com.de

WP_Query sortiert nach benutzerdefiniertem Feld, das eine Datumszeichenfolge ist?

Jeder meiner Posts hat ein einzelnes benutzerdefiniertes Feld, bei dem es sich um eine Datumszeichenfolge handelt (nicht um das Datum des Posts). Anstelle der aktuellen Abfrage meines Themas, die nach Veröffentlichungsdatum bestellt, möchte ich nach diesem benutzerdefinierten Felddatum bestellen. Wie kann ich diese Abfrage (die Abfrage des Themas) ändern, um stattdessen mein benutzerdefiniertes Feld (eine Zeichenfolgendarstellung eines Datums) zu verwenden?

$timeline_query = new WP_Query(array( 
    'post_type' => 'post', 
    'orderby' => 'date', 
    'order' => 'DESC', 
    'posts_per_page' => -1 
));
3
brushleaf

Die Seite WP_Query im Codex enthält einen Abschnitt zu Order & Orderby Parameters .

Wenn Sie die Abfrage nach einem benutzerdefinierten Feld sortieren möchten, müssen Sie 'orderby' => 'meta_value'UNDhinzufügen und das benutzerdefinierte Feld (im obigen Beispiel your_date_field genannt) mit dem Schlüssel meta_key in der Abfrage angeben.

$timeline_query = new WP_Query(array( 
    'post_type' => 'post', 
    'orderby' => 'meta_value',
    'meta_key' => 'your_date_field' 
    'posts_per_page' => -1 
));
4
RRikesh

Nur ein Hinweis für diejenigen, die das HTML5-Feld type = "date" verwenden. Das Format wird in jjjj-mm-tt aufgezeichnet. Ich habe 'orderby' => 'meta_value-num' verwendet, weil ich dachte, dass das Datum numerisch ist und nicht herausgefunden habe, warum die Bestellung nicht gültig ist. Dann habe ich diesen Thread gesehen und stattdessen 'meta_value' verwendet und es hat funktioniert!

HINWEIS Ich wollte dies als Kommentar zu RRikeshs Antwort hinzufügen, kann dies jedoch nicht kommentieren, da mein Konto noch nicht über eine ausreichende Reputation verfügt. Daher musste ich eine neue Antwort hinzufügen.

0
Chris Chalmers