Я пытаюсь показать последние шесть постов, которые были опубликованы не позднее сегодняшнего дня, но год назад. У меня есть следующий код:
<?php
$current_month = date('j');
$last_year = date('Y')-1;
?>
<?php query_posts('month='.$current_month.'month='.$current_month.'&year='.$last_year.'&posts_per_page=6');
if (have_posts()): while (have_posts()) : the_post(); ?>
<div class = "post-item">
<div class = "post-thumb-image">
<a href = "<?php the_permalink(); ?>"><?php the_post_thumbnail( 'grid-thumb' ); ?></a>
</div>
<div class = "post-title">
<h4><a href = "<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
<p class = "post-date"><?php echo get_the_date(); ?></p>
</div>
</div>
<?php endwhile; endif; ?>
Он возвращает последние шесть сообщений текущего месяца год назад. Так что, если сейчас 10 декабря 2020 года, будут показаны последние шесть сообщений за декабрь 2019 года.
Тем не менее, я хочу показать последние шесть сообщений, которые были опубликованы до сегодняшнего дня год назад, чтобы он отображал последние шесть сообщений, опубликованных до 10 декабря 2019 года.
Другая проблема заключается в том, что в приведенном выше коде используется query_posts()
. Предполагается, что это очень неэффективно, поэтому я хотел бы знать, смогу ли я добиться того, чего хочу, используя вместо этого WP_Query
или, в идеале, get_posts()
.
Вы должны попробовать использовать WP_Query с такими параметрами:
$args = array(
'date_query' => array(
array(
'column' => 'post_date_gmt',
'before' => '1 year ago',
),
),
'posts_per_page' => 6,
);
$query = new WP_Query( $args );
Источник: https://developer.wordpress.org/reference/classes/wp_query/#date-parameters
Я создал плагин для этого много лет назад. Вы можете получить доступ к его исходному коду через Github или загрузить его из репозитория плагинов WordPress Плагин.
Да, на самом деле я создал этот плагин много лет назад, но он до сих пор прекрасно работает. Вы можете установить его как плагин, он предоставляет вам виджет в разделе «Внешний вид».
Спасибо за информацию. Последнее обновление было 7 лет назад. Вы уверены, что это все еще хорошо работает с текущими версиями WP?