Je souhaite appliquer à mon site une règle qui filtre toutes les publications de blog de plus de 2 ans.
Certaines solutions impliquent de placer manuellement des publications dans une catégorie et de la masquer, mais je souhaite une solution entièrement automatisée.
Existe-t-il un moyen de dire à WP que chaque fois que vous saisissez des publications pour appliquer cette règle:
if( !is_admin() ) {
select posts where post date > two-years-ago-today
}
Merci
Vous pouvez utiliser le hook pre_get_posts
pour modifier la requête principale:
add_action( 'pre_get_posts', 'filter_old_posts' );
function filter_old_posts($query){
if( !is_admin() && $query->is_main_query()){
add_filter('posts_where', $callback = function( $where = ''){
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 years')) . "'";
return $where;
});
add_filter('getarchives_where', $callback );
}
}
Cela filtrera les publications principales de la requête afin de renvoyer les publications de moins de 2 ans.
Il existe également une deuxième copie du filtre qui utilise getarchives_where
pour filtrer les résultats du widget d'archivage.