Как отображать записи по месяцам?

9 июл. 2011 г., 04:48:24
Просмотры: 22.4K
Голосов: 1

Как можно использовать wp-query для отображения записей по месяцам за последний год? Или, возможно, это можно реализовать с помощью какого-то хака wp_archive?

1
Комментарии

Смотрите также мой ответ здесь, это удобная функция, которую я создал: https://wordpress.stackexchange.com/a/276929/10381

Luca Reghellin Luca Reghellin
15 авг. 2017 г. 12:01:21
Все ответы на вопрос 3
1

WordPress 3.7 представил date_query для отображения записей по месяцам:

$args = array(
    'date_query' => array(
        array(
            'month' => $month
        )
    )
);
$query = new WP_Query( $args );

Примечание: $month означает номер месяца (от 1 до 12)

25 окт. 2017 г. 14:10:42
Комментарии

Идеальное решение!!!!.. Спасибо, что сэкономили моё время. :)

Raghav Raghav
17 июн. 2020 г. 09:28:38
0

Это не хак, а функция. Вы можете просто использовать wp_get_archives

http://codex.wordpress.org/Function_Reference/wp_get_archives

В качестве альтернативы можно использовать wp_query с параметром времени для фактического контента, например:

//Декабрь
$query = new WP_Query( 'monthnum=12' );

http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters

9 июл. 2011 г. 06:32:58
1

Попробуйте это, должен уточнить, что код основан на сниппете, который я видел.

    <?php

$blogtime = date('Y'); // Текущий год
$prev_limit_year = $blogtime - 1; // Предыдущий год
$prev_month = ''; // Предыдущий месяц
$prev_year = ''; // Предыдущий год

$args = array(
         'posts_per_page' => 20, // Количество постов на странице
         'ignore_sticky_posts' => 1 // Игнорировать закрепленные посты
);

$postsbymonth = new WP_Query($args); // Создаем новый запрос

while($postsbymonth->have_posts()) { // Цикл по постам

    $postsbymonth->the_post(); // Устанавливаем текущий пост

    // Проверяем изменился ли месяц или год по сравнению с предыдущим и равен ли год предыдущему году
    if(get_the_time('F') != $prev_month || get_the_time('Y') != $prev_year && get_the_time('Y') == $prev_limit_year) {

                   echo "<h2>".get_the_time('F, Y')."</h2>\n\n"; // Выводим заголовок с месяцем и годом

        }

    ?>

        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

                <?php // ваши другие шаблонные теги ?>


    <?php

    $prev_month = get_the_time('F'); // Запоминаем текущий месяц
    $prev_year = get_the_time('Y'); // Запоминаем текущий год

}

        ?>
24 нояб. 2011 г. 03:56:06
Комментарии

Можно ли сделать так, чтобы также выводились месяцы с нулевым количеством записей?

davebowker davebowker
5 авг. 2012 г. 06:16:36