Запрос постов за текущий год
Я не совсем понимаю, почему это не работает. Я пытаюсь использовать следующий код, чтобы показывать только посты текущего года на главной странице:
<?php query_posts( "&year=$current_year&order=DESC"); ?>
Но все равно отображаются посты за 2012 год (они на самом деле не создавались в 2012, но я установил дату публикации для одного из показываемых постов на февраль прошлого года)
Согласно документации, я должен делать именно так. Может кто-нибудь пояснить?
Спасибо
Вам просто нужно получить текущую дату и добавить ее в data_query в wp_query. Посмотрите пример:
<?php
$getdate = getdate();
$args = array(
'date_query' => array(
array(
'year' => $getdate["year"]
),
),
);
$query = new WP_Query( $args );
?>
А затем используйте цикл:
<?php
if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();
the_title();
the_content();
endwhile; endif;
?>

Не используйте query_posts
для изменения запросов. Это приводит к нерациональному использованию ресурсов и создает непредсказуемые результаты, так как перезаписывает оригинальный запрос, который выполняется до загрузки шаблона.
Вместо этого используйте pre_get_posts
в файле functions.php
вашей темы, чтобы изменить запрос до его отправки в базу данных и до загрузки шаблона.
function home_page_current_year( $query ){
if( $query->is_home() && $query->is_main_query() )
$query->set( 'year', date('Y') );
}
add_action( 'pre_get_posts', 'home_page_current_year' );
