Utiliser un champs Date ACF dans une WP_Query

Utiliser un champs Date ACF dans une WP_Query
WordPress Lecture 2 minutes • 12 novembre 2021

Apprenez à ordonner des articles comme des événements ou un agenda selon leur date effective avec WordPress. Dans cet exemple on utilise le plugin ACF pour créer le champs Date puis une boucle PHP pour afficher les Événements selon leur date, tout en les classant temporellement du plus proche au plus lointain.

Un type de contenu personnalisé (custom post type) "Événement" est créé au préalable puis on lui affecte le champs ACF Date.

Créer le champs Date dans ACF

Créer le champs Date dans ACF et veiller à ce que le "Format dans le modèle" soit réglé comme Ymd

Paramétrage du champs Date dans ACF

WP_Query pour afficher un contenu par champs Date ACF

Le code PHP suivant permet d'afficher mon post_type "evenement" selon la date du champs ACF Date que j'ai nommé dans l'exemple "date_de_levenenement".

De plus, les Événements sont classés du plus proche au plus lointain par rapport à la date actuelle. Aussi les Événements ayant une date révolue n'apparaissent pas.
C'est rendu possible grâce au "compare" qui indique que l'on tient compte uniquement des Événements dont la date est supérieur ou égale à la date d'aujourd'hui ">=".

<?php
$date_query = array(
	array(
		'key' => 'date_de_levenement', //Identifiant ou slug du champs ACF servant de Date
		'value' => date('Ymd'),
		'type' => 'DATE',
		'compare' => '>='
		)
	);
$args = array(
	'post_type' => 'evenement', //Identifiant ou slug du type de post
	'posts_per_page' => '5', //Nombre de posts à afficher
	'order' => 'ASC',
	'post_status' => 'publish',
	'orderby' => 'meta_value_num',
	'meta_key' => 'date_de_levenement', //Identifiant ou slug du champs ACF servant de Date
	'meta_query' => $date_query
);
$query_posts = new WP_Query( $args );
if ($query_posts->have_posts()) :?>
	<?php while ( $query_posts->have_posts() ) : $query_posts->the_post();
		//Mon contenu ici
	endwhile;
endif;
wp_reset_query();
?>

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *