Ceci est similaire, mais plus spécifique, à la question trouvée ici . Cette question suggère l'exemple Wordpress WP_Query , qui est utile, mais ne fonctionne pas pour moi.
Mon code est le suivant:
$posts = get_posts(array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'from_datetime',
'meta_value' => date( "F d, Y g:i a" ),
'meta_compare' => '>',
'orderby' => 'meta_value',
'order' => 'ASC'
));
Les champs personnalisés sont créés avec ACF dans notre blog. Le champ from_datetime
se présente comme suit:
April 18, 2017 2:30 pm
J'ai donc traduit cela dans la nomenclature des dates:
date( "F d, Y g:i a" )
Les événements sont un type de publication personnalisé. En gros, je veux montrer les 2 événements à venir qui ne sont PAS passés. Donc, cela est assez proche de l'exemple de la page WP_Query, mais ce qui précède ne fonctionne toujours pas. La requête ne renvoie rien. Je sais que si je supprime les éléments meta_value
ci-dessus, il y a quatre événements à montrer qui vont au-delà de "maintenant".
Des idées sur ce que je peux faire mal? La requête semble correcte selon la documentation de WP. Je vous remercie!
Je pense que vous avez une erreur dans votre requête. S'il vous plaît essayez ceci:
$posts = get_posts(array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_query' => array(
'meta_key' => 'from_datetime',
'type' => 'DATETIME', // You can also try changing it to TIME or DATE if it doesn't work
'meta_value' => date( "F d, Y g:i a" ),
'meta_compare' => '>',
),
'orderby' => 'meta_value',
'order' => 'ASC'
));
Utilisez-vous ACF Pro (par exemple, en utilisant le type de champ "Sélecteur de date et d'heure"), ou l'un des plug-ins qui ajoute un type de champ date/heure au format "normal" ACF (par exemple, Sélecteur de date et d'heure pour la personnalisation avancée Des champs ).
Dans le premier cas, il stocke les valeurs de date/heure dans $wpdb->postmeta
comme 2017-04-18 14:30:00
, quel que soit le "Format d'affichage" ou le "Format de retour" spécifié dans la définition du champ. Ainsi, vous devriez interroger en tant que:
$posts = get_posts(array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'from_datetime',
'meta_value' => date( "Y-m-d h:i:s" ),
'meta_compare' => '>',
'orderby' => 'meta_value',
'order' => 'ASC'
));
Si vous utilisez l'un des plug-ins qui ajoute un type de champ date/heure à ACF "normal", vous devrez déterminer comment ce plug-in stocke les valeurs et le format meta_value
en conséquence.