web-dev-qa-db-fra.com

Limiter les flux RSS au mois calendaire précédent

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');`
1
Emrys

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 .

1
birgire