Je souhaite afficher les messages des 30 derniers jours dans une barre latérale, mais je ne souhaite pas utiliser query_posts. Existe-t-il un moyen d'y parvenir avec la fonction get posts?
Oui, il suffit d'ajouter un filtre avant de l'appeler et de le supprimer après l'avoir fait.
function filter_where_wpa89154($where = '') {
//posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter('posts_where', 'filter_where_wpa89154');
$args = array(
'posts_per_page' => 5,
'post_type' => 'post',
'post_status' => 'publish',
'suppress_filters' => false
);
$posts = get_posts($args);
remove_filter('posts_where', 'filter_where_wpa89154');
remarquez le 'suppress_filters' => false
qui est ce qui rend cela possible avec get_posts
À partir de la version 3.7, vous pouvez utiliser date_query http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters
Donc, cela ressemblerait à:
$args = array(
'posts_per_page' => 5,
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
'after' => date('Y-m-d', strtotime('-30 days'))
),
'suppress_filters' => false
);
$posts = get_posts($args);