получать сообщения не старше X дней - Wordpress
На моем сайте Wordpress я использую этот код get_posts:
get_posts(
array (
'numberposts' => 5,
'orderby'=>'comment_count',
'order'=>'DESC',
'post_type' => array ( 'post' )
)
Как мне отфильтровать сообщения, чтобы они были не старше 10 дней? Поэтому в нем должны быть перечислены только сообщения за последние 10 дней.
6
Author: Henrik Petterson, 2013-06-08
2 answers
Начиная с 3.7 вы можете использовать запрос даты http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters
Таким образом, это будет выглядеть так:
$args = array(
'posts_per_page' => 5,
'post_type' => 'post',
'orderby' => 'comment_count',
'order' => 'DESC',
'date_query' => array(
'after' => date('Y-m-d', strtotime('-10 days'))
)
);
$posts = get_posts($args);
27
Author: Kode, 2014-07-31 21:50:28
Исключение из документа должно работать просто отлично. get_posts() использует WP_Query() за кулисами, чтобы сделать фактический запрос. Для вашего случая измененный пример должен выглядеть примерно так:
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-10 days')) . "'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = get_posts(array (
'numberposts' => 5,
'orderby'=>'comment_count',
'order'=>'DESC',
'post_type' => array ( 'post' )
));
remove_filter( 'posts_where', 'filter_where' );
2
Author: Lepidosteus, 2013-06-07 23:35:51