Rechercher par programme les publications WordPress par plage de dates
TL; DR : Le code partagé dans ce message montre comment vous pouvez modifier la requête qui s’exécute sur la page Tous les messages afin que vous puissiez limiter la façon dont vous recherchez des messages à une plage de dates spécifiée.
Cela fait un petit moment que je n’ai pas écrit sur l’utilisation du post_wherefiltre pour modifier la requête de recherche qui s’exécute sur une page donnée, comme la zone All Posts de WordPress. Mais étant donné qu’il existe une variété d’utilisations pour récupérer des messages – et des types de messages personnalisés – de différentes manières, il existe différentes façons d’utiliser ce filtre unique.
Rechercher des messages par plage de dates
Pour rechercher des publications par plage de dates, voici ce qui doit se passer :
- Enregistrez un rappel avec le
posts_wherefiltre, - Assurez-vous que la fonction accepte la chaîne pour
whereet l’instance deWP_Queryqui s’exécute sur la page - Obtenez la date et l’heure d’aujourd’hui et la date et l’heure d’il y a quatre semaines
- Ajouter la
whereclause au début pour limiter les résultats à la date returnla requête mise à jour.
<?php
add_filter(
'posts_where',
function (string $where, WP_Query $query ): string {
global $wpdb;
$todays_date = gmdate( 'Y-m-d H:i:s', strtotime( 'now') );
$four_weeks_ago = gmdate( 'Y-m-d H:i:s', strtotime( '-4 weeks') );
$prepend = $wpdb->prepare(
" AND {$wpdb->posts}.post_date > %s",
$four_weeks_ago
);
$prepend .= $wpdb->prepare(
" AND {$wpdb->posts}.post_date < %s",
$todays_date
);
return $prepend. $where;
}, 101, 2
);
Le résultat de cette fonction est une requête modifiée qui limite les publications renvoyées à la date et à l’heure spécifiées. À savoir, il y a quatre semaines jusqu’à l’heure, la minute et la seconde.
Vous pouvez changer cela en mettant à jour la -4 weekschaîne transmise à la strtotimefonction (mais je vous recommande de consulter la page de manuel PHP liée ci-dessous pour comprendre comment cette fonction fonctionne avec un langage comme celui-ci).
Références
[posts_where](https://developer.wordpress.org/reference/hooks/posts_where/)[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)[wpdb](https://developer.wordpress.org/reference/classes/wpdb/)[gmdate](https://www.php.net/manual/en/function.gmdate.php)[strtotime](https://www.php.net/manual/en/function.strtotime.php)