web-dev-qa-db-fra.com

WP_Query ordonné par champ personnalisé qui est une chaîne de date?

Chacune de mes publications a un seul champ personnalisé qui est une chaîne de date (et non la date de publication). Au lieu de la requête actuelle de mon thème, qui commande par date de publication, je souhaite commander par date de champ personnalisée. Comment puis-je changer cette requête (la requête du thème) pour utiliser plutôt mon champ personnalisé (une représentation sous forme de chaîne d'une date)?

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

La page WP_Query du Codex contient une section sur Order & Orderby Parameters .

Si vous souhaitez classer la requête par un champ personnalisé, vous devez ajouter 'orderby' => 'meta_value'ET. Vous devez également spécifier le champ personnalisé (appelé your_date_field dans l'exemple ci-dessus) à l'aide de la clé meta_key dans la requête.

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

Juste une note pour ceux qui utilisent le champ HTML5 type = "date", le format est enregistré au format aaaa-mm-jj. J'utilisais 'orderby' => 'meta_value-num' car je pensais que la date était numérique et je ne comprenais pas pourquoi la commande était éteinte. Ensuite, j'ai vu ce fil et utilisé "meta_value" à la place et cela a fonctionné!

REMARQUE Je voulais ajouter ceci en tant que commentaire à la réponse de RRikesh, mais je ne peux pas en parler car mon compte n'a pas encore une réputation assez élevée. J'ai donc dû ajouter une nouvelle réponse.

0
Chris Chalmers