Je souhaite filtrer mon flux RSS pour n'afficher que les messages du mois précédent. J'ai ce code dans mon fichier de fonctions de thème mais il ne fonctionne pas?
// filter the RSS feeds to show only the last calendar month
$lastMonthNumber = date( 'n', current_time( 'timestamp' ) ) - 1; // work out the previous month number
function feedFilter($query) {
if ($query->is_feed) {
$query->set('date_query', array(
array(
'month' => $lastMonthNumber
//'month' => 5
)
));
}
return $query;
}
add_filter('pre_get_posts','feedFilter');`
Cette approche ne fonctionne pas pour janvier:
$lastMonthNumber = date( 'n', current_time( 'timestamp' ) ) - 1;
comme cela donnerait 1 - 1 = 0
.
Voici une autre suggestion, en utilisant la chaîne à la prise en charge temporelle de la requête de date:
$query->set( 'date_query', [
[
'after' => 'midnight first day of last month',
'inclusive' => true,
],
[
'before' => 'midnight first day of this month',
'inclusive' => false,
]
] );
Par exemple, cela devrait générer:
wp_posts.post_date >= '2018-05-01 00:00:00' AND wp_posts.post_date < '2018-06-01 00:00:00'
si le jour actuel est le 27 juin 2018 .
Notez que pre_get_posts
est une action , pas un filtre .