Отображение публикаций WordPress по дате

Вопрос или проблема

Я хочу показать посты WordPress по дням/датам на главной странице.

например:

Понедельник, 3 Января

  • пост 1
  • пост 2
  • пост 3

Воскресенье, 2 Января

  • пост 1
  • пост 2
  • пост 3

Суббота, 1 Января

  • пост 1
  • пост 2
  • пост 3

Какой запрос WordPress мне использовать?

Спасибо. Извините за плохой английский.

Я думаю, что на ваш вопрос уже ответили здесь

$args = array('posts_per_page' => -1, 'orderby' => 'date' );
$myQuery = new WP_Query($args);
$date="";
if ( $myQuery->have_posts() ) : while ( $myQuery->have_posts() ) : $myQuery->the_post();
if ( $date != get_the_date() ) {
    echo $date;
    echo '<hr />';
    $date = get_the_date();
}
the_title(); // или что-то другое, что вам нужно.
echo '<br />';
endwhile; endif;
wp_reset_postdata();

Дополнительная информация о запросе здесь: http://codex.wordpress.org/Class_Reference/WP_Query

Ответ или решение

Чтобы отобразить посты WordPress на главной странице по дате, необходимо использовать класс WP_Query, который позволяет изменять параметры запроса для получения постов. В данном случае, вы хотите сгруппировать посты по дням и отобразить каждую группу с заголовком, содержащим дату. Вот подробное руководство о том, как это можно реализовать.

Шаг 1: Настройка WP_Query

Первым делом, вы создадите массив аргументов для класса WP_Query, чтобы получить все посты, отсортированные по дате.

$args = array(
    'posts_per_page' => -1, // Получаем все посты
    'orderby' => 'date', // Сортируем по дате
    'order' => 'DESC' // Сортируем от самых новых к самым старым 
);

$myQuery = new WP_Query($args);
$date = ""; // Переменная для хранения текущей даты

Шаг 2: Цикл для вывода постов

Затем, с помощью цикла while, вы будете перебрать все посты и группировать их по дате. В случае изменения даты, вы выведете новое заглавие.

if ($myQuery->have_posts()) : 
    while ($myQuery->have_posts()) : $myQuery->the_post();
        // Получаем текущую дату поста
        $current_date = get_the_date('l, F d'); // Формат: "День, Месяц Дата"

        // Если текущая дата отличается от предыдущей
        if ($date != $current_date) {
            // Отображаем новую дату
            echo '<h3>' . esc_html($current_date) . '</h3>';
            echo '<ul>'; // Начинаем новый список
            $date = $current_date; // Обновляем дату
        }

        // Вывод заголовка поста
        echo '<li>' . get_the_title() . '</li>';

    endwhile; 
    echo '</ul>'; // Закрываем последний список
endif; 

wp_reset_postdata(); // Сбрасываем данные запроса

Объяснение кода

  • WP_Query: Используется для создания пользовательских запросов к базе данных WordPress.
  • have_posts() / the_post(): Методы для начала цикла, который позволяет нам проходить через все посты, возвращенные запросом.
  • get_the_date(): Возвращает дату создания поста в заданном формате, в данном случае с указанием дня недели.
  • esc_html(): Функция для экранирования текста перед выводом в HTML для дополнительной безопасности.
  • Списки: Каждый новый день открывает новый <ul> список для постов, позволяя визуально разделить группы постов по дате.

Заключение

Этот код предоставит вам возможность отображать посты на главной странице WordPress, сгруппированные по дате. Вы можете настроить формат даты и количество постов по своему усмотрению, изменяя параметры в массиве $args.

При необходимости, вы можете добавить стили CSS, чтобы улучшить внешний вид отображения. Этот метод обеспечивает не только удобный вывод, но и эффективное использование ресурсов WordPress.

Оцените материал
Добавить комментарий

Капча загружается...