Wordpress: отображение записей годичной давности с помощью WP_Query или get_posts()

Я пытаюсь показать последние шесть постов, которые были опубликованы не позднее сегодняшнего дня, но год назад. У меня есть следующий код:

<?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().

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
0
391
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны попробовать использовать 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?

Jascha Goltermann 15.12.2020 17:06

Да, на самом деле я создал этот плагин много лет назад, но он до сих пор прекрасно работает. Вы можете установить его как плагин, он предоставляет вам виджет в разделе «Внешний вид».

Zed 16.12.2020 15:27

Другие вопросы по теме