Intereting Posts
Пользовательский тип сообщения: условия связи, чтобы показать счет Свяжите пользователей с настраиваемым типом сообщения Новый термин таксономия и описание на первой странице. Ввод – х Как я могу разработать плагин, который генерирует страницу динамически Свежая новая установка или сохранение старой версии Загрузка метабокса и пользовательское поле wp_enqueue_style для страницы параметров плагина Шорт-код видео за пределами WordPress, не работающий с IE и Flash-флэш-памятью mediaelement Контактная форма помещает данные в sql Как подключиться к публикациям сообщений в WordPress 4.7.5 Магазин WordPress: включение custormers для выбора цвета продукта с помощью эскизов изображений на пользовательских полях Переведенные слова, не показывающие дочернюю тему Если файл существует с именем slug страницы, покажите изображение еще ничего Редактирование URL-адреса пользовательского почтового адреса пользовательский запрос для обеих категорий и страниц с использованием глобального $ wpdb;

Несколько сообщений с одной итерацией цикла

Я хочу 3 сообщения с одной итерацией цикла, поэтому я использую the_post() для достижения этого: (html удален)

 <?php while ( have_posts() ) : the_post(); the_title(); the_post(); the_title(); the_post(); the_title(); endwhile; ?> 

Проблема начинается, если количество сообщений не делится на 3. Например, если у меня есть 5 сообщений, этот цикл все равно попытается отобразить 6 из них, создав пустой html. Как я могу это решить? Или, может быть, я пытаюсь достичь этой функции неправильно?

@edit: Вот HTML, который я хочу вывести, чтобы уточнить мой вопрос:

 <div class="row"> <div class="span3"> <h2>Title</h2> <p>Content</p> </div> <div class="span3"> <h2>Title</h2> <p>Content</p> </div> <div class="span3"> <h2>Title</h2> <p>Content</p> </div> </div> <div class="row"> <div class="span3"> <h2>Title</h2> <p>Content</p> </div> <div class="span3"> <h2>Title</h2> <p>Content</p> </div> <div class="span3"> <h2>Title</h2> <p>Content</p> </div> </div> 

Поэтому я хочу окружить каждые 3 сообщения с помощью .row .

Solutions Collecting From Web of "Несколько сообщений с одной итерацией цикла"

В конечном счете, этот вопрос не по теме , потому что решение не имеет ничего общего с WordPress. Вывод сообщений в шаблон сетки – это проблема HTML / CSS , и в решениях с лучшей практикой не нужно помещать каждые три столбца в отдельный, содержащий <div> . Тем не менее, вы можете делать то, что хотите, используя PHP (который, с технической точки зрения, все еще делает этот вопрос вне темы ).

Я хотел бы начать с запроса числа сообщений, делящихся на 3, или установки posts_per_page на число, делящееся на 3. Как вы это делаете, зависит от того, вы вызываете новый WP_Query() для своего цикла типа пользовательского сообщения, или если вы фильтруете pre_get_posts для изменения запроса по умолчанию. В любом случае, вы должны использовать аргумент posts_per_page .

Затем вы можете просто определить счетчик внутри цикла и использовать его для закрытия / открытия DIVs по мере необходимости:

 <div class="row"> <?php $counter = 1; if ( have_posts() ) : while ( have_posts() ) : the_post(); global $wp_query; the_title(); the_content(); if ( ( 0 == $counter % 3 ) && ( $counter != $wp_query->posts_per_page ) ) { ?> </div><div class="row"> <?php } $counter++; endwhile; endif; ?> </div> 

Вторая часть условия гарантирует, что вы не получите пустой div после последней строки.

После публикации этого вопроса у меня был момент «эврики» и он достиг этого (возможно, уродливого), окружая мой html для каждого сообщения простым if(get_the_title()) . Поэтому, если название не существует, то ничего не отображается. Но я все еще думаю, что есть более красивый способ сделать это.