Вопрос или проблема
Я хочу показать посты 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.