サイドバーで過去30日間の投稿を取得したいのですが、query_postsを使用したくないです。投稿取得機能でこれを達成する方法はありますか。
はい、呼び出す前に単純にフィルタを追加し、実行した後に削除するだけです。
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');
これが'suppress_filters' => false
で起こるのはget_posts
です。
3.7以降ではdate_query http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters を使用できます。
だからそれはようになります:
$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);