Группировка постов по дате
-
Как сделать, чтобы посты группировались по дате? Т.е. идет заголовок 10 апреля и под ним список постов, затем заголовок 11 апреля и под ним список постов и т.д.
-
А если не лениться читать Кодекс, то еще проще.
if ( have_posts() ) { while ( have_posts() ) { the_post(); the_date('Y.m.d.', '<h3>', '</h3>'); // // Post Content here // } }
<?php while ( $news_query->have_posts() ) : $news_query->the_post(); ?> <?php $expirationdate_unix = get_the_date("U") + 10800; if ( $expirationdate_unix > $currentdate_unix ) { $i++; if (($i % 2) == 1) echo '<div class="row">'; get_template_part( 'anons', 'news', get_post_format() ); if (($i % 2) == 0) echo '</div>'; } ?> <?php endwhile; ?>
Сюда как правильно встроить?
А если не лениться читать Кодекс, то еще проще.
Так в этом случае группировки не будет, просто после каждого поста будет идти дата. Или я не прав?
Так в этом случае группировки не будет, просто после каждого поста будет идти дата. Или я не прав?
А если не лениться читать Кодекс? 🙂
https://codex.wordpress.org/Function_Reference/the_dateСюда как правильно встроить?
Где-то после the_post() и перед get_template_part( ‘anons’…
Вам виднее.Где-то после the_post()
У меня же нет the_post(). Я так полагаю после $i++;?
- Ответ изменён 6 лет, 5 месяцев назад пользователем dmitriy88.
У меня же нет the_post().
А если найду? :))))))
А если найду? :))))))
Вот блин) Но все равно же получается после i++;? Конструкцию из кодекса вставлять? the_date(‘Y.m.d.’, ‘<h3>’, ‘</h3>’);
Пробуйте ) Мне не хочется вникать в Ваш код, потому что есть подозрение, что если копнуть чуть глубже, его придется полностью переделать. А мне не до того сейчас.
Вот итоговый код
<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?> <?php $expirationdate_unix = get_the_date("U") + 10800; if ( $expirationdate_unix > $currentdate_unix ) { $i++; if ( $date != get_the_date() ) { $date = get_the_date(); $date_ru = dateToRussian(get_the_date(' j F')); echo "<h3>$date_ru</h3>"; } if (($i % 2) == 1) echo '<div class="row">'; get_template_part( 'anons', 'new', get_post_format() ); if (($i % 2) == 0) echo '</div>'; } ?> <?php endwhile; ?>
Вроде все работает, но есть одна проблема: если у самой первой даты нечетное количество постов, то заголовок H3 с датой попадает в <div class=»row»>. Для четного количества все хорошо. Подскажите, что нужно доработать, сам уже много чего перепробовал, но не получается. Не закрывается вот этот /div
if (($i % 2) == 0) echo '</div>';
Какое условие нужно добавить, чтобы после последнего поста конкретной даты div закрывался?Есть мысли, как закрыть тег <div>?
После цикла
if (($i % 2) == 1) echo '</div>';
Эта запись после цикла у меня есть. Не стал полный код копировать, только проблемную часть добавил.
<?php endwhile; ?> <?php if ( 1 == ($i % 2)) echo '</div>'; ?>
До добавления заголовка даты все работало, а вот с датой для нечетного числа записей перестало все работать.
Опишу более точно. Например, за 23 апреля 4 записи, тогда все хорошо, 24 апреля идет
<h3>24 апреля</h3>
<div class=»row»>
анонс поста
анонс поста
</div>
А вот если за 23 апреля 5 записей, то 24 апреля идет как
<div class=»row»>
анонс поста
<h3>24 апреля</h3>
анонс поста
</div>
Т.е. дата попадает внутрь конструкции row.Понятно. При смене даты закрывайте, если нужно, открытый div и сбрасывайте счетчик $i.
Это понятно, что при смене даты нужно закрывать </div>. Только не пойму, как это в коде реализовать.
- Тема «Группировка постов по дате» закрыта для новых ответов.