Поддержка Проблемы и решения Группировка постов по дате

  • Решено dmitriy88

    (@dmitriy88)


    Как сделать, чтобы посты группировались по дате? Т.е. идет заголовок 10 апреля и под ним список постов, затем заголовок 11 апреля и под ним список постов и т.д.

Просмотр 15 ответов — с 1 по 15 (всего 33)
  • Так и есть во всех темах по умолчанию — сортировка по дате, новые вверху.

    Добавлю и уточню к сообщению коллеги выше

    идет заголовок 10 апреля и под ним список постов, затем заголовок 11 апреля и под ним список постов

    В WP есть страницы архивов по датам. В них вы увидите именно то, что хотите увидеть

    Например http://ваш_сайт/2018/27/3/ — страница архива записей за 3 марта 2018 г

    http://joxi.ru/1A5Kv8gSKVJDNm
    (надеюсь ясно, что если за эту дату нет постов — то и страницы такой не будет)

    • Ответ изменён 6 лет, 1 месяц назад пользователем O.
    • Ответ изменён 6 лет, 1 месяц назад пользователем O.
    Модератор Yuri

    (@yube)

    Т.е. идет заголовок 10 апреля и под ним список постов, затем заголовок 11 апреля и под ним список постов и т.д.

    Использовать в шаблоне не the_time(), а the_date() (или get_the_date() и if в зависимости от верстки шаблона). Функции идентичны во всем, кроме одного: the_date() выводит дату-время только если дата изменилась.
    Матчасть: https://developer.wordpress.org/reference/functions/the_date/

    Реверсный порядок — это немного другой вопрос. Если коротко, то можно использовать хук ‘pre_get_posts’ либо поставить плагин.

    • Ответ изменён 6 лет, 1 месяц назад пользователем Yuri.
    • Ответ изменён 6 лет, 1 месяц назад пользователем Yuri.

    Так и есть во всех темах по умолчанию — сортировка по дате, новые вверху.

    Так речь о группировке, а не сортировке.

    В WP есть страницы архивов по датам. В них вы увидите именно то, что хотите увидеть

    Например http://ваш_сайт/2018/27/3/ — страница архива записей за 3 марта 2018 г

    Меня не интересуют отдельные страницы. Мне нужно, чтобы на одной странице посты группировались по датам. Дата участвует при этом в качестве заголовка.

    Так речь о группировке, а не сортировке.

    А чем, в данном случае это отличается? Они сортируются и соответственно группируются по дате.

    Во так мне нужно

    11 апреля 2018
    — пост 1
    — пост 2
    — пост 3
    12 апреля 2018
    — пост 1
    — пост 2
    — пост 3
    13 апреля 2018
    — пост 1
    — пост 2
    — пост 3

    Во так мне нужно

    И чем это отличается от дефолтного?

    В дефолтном разве посты группируются под заголовками (дата в качестве заголовка)?

    • Ответ изменён 6 лет, 1 месяц назад пользователем dmitriy88.

    В дефолтном разве посты группируются под заголовками (дата в качестве заголовка)?

    ? Я Вас не понимаю. Заголовки есть у постов.

    Хорошо, не заголовок, а допустим дата под тегом H3, затем список постов по этой дате. Затем следующая дата под тегом H3 и список постов и т.д. Надеюсь, что так понятнее.

    Модератор Yuri

    (@yube)

    дата под тегом H3, затем список постов по этой дате.

    Я же написал, что можно использовать.

    Я же написал, что можно использовать.

    Если честно, то я ничего не понял.

    Хорошо, не заголовок, а допустим дата под тегом H3, затем список постов по этой дате. Затем следующая дата под тегом H3 и список постов и т.д. Надеюсь, что так понятнее.

    А, вот теперь понятнее 🙂 (хотя мне трудно представить зачем это нужно 🙂 )

    Это нужно в шаблонах (своих.. таксономий?) использовать множественные циклы.

    Но если это сложно — могу предложить костыль — писать на каждую дату пост формата «статус» или «заметка» и назначать ему время новее всех остальных.

    Модератор Yuri

    (@yube)

    использовать множественные циклы.

    Зачем усложнять? Выводить дату между постами, если она изменилась. Визуально — группировка, семантически — нет, но если пошаманить то можно и обертки прикрутить.
    Вот как-то так.

    
    $the_date = '';
    if ( have_posts() ) {
    	while ( have_posts() ) {
    		the_post(); 
    		if ( $the_date != get_the_date('Y.m.d') ) {
    			$the_date = get_the_date('Y.m.d');
    			echo "<h3>$the_date</h3>";
    		}
    		//
    		// Post Content here
    		//
    	} 
    }
    
Просмотр 15 ответов — с 1 по 15 (всего 33)
  • Тема «Группировка постов по дате» закрыта для новых ответов.