Обернуть элементы в div внутри цикла WP_Query
Есть сайт на WordPress. Вывожу записи через WP_Query, подскажите пожалуйста как обернуть все <div class="home_tn_link"> в один общий div, что бы этот общий div был на одном уровне вложенности с <div class="title">.
<?php
$query = new WP_Query( [
'orderby' => 'title',
'posts_per_page' => -1,
] );
global $post;
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$fl = mb_substr( $post->post_title, 0, 1 );
if( $fl !== ( $last_fl ?? '' ) ){
$last_fl = $fl;
?>
<div class="title"><?php echo $fl; ?></div>
<?php
}?>
<div class="home_tn_link"><?php echo $post->post_title; ?></div>
<?php
}
}
wp_reset_postdata(); ?>
Пример нужной структуры:
<div>
<div class="title"><?php echo $fl; ?></div>
<div>
<div class="home_tn_link"></div>
<div class="home_tn_link"></div>
<div class="home_tn_link"></div>
</div>
</div>
<div>
<div class="title"><?php echo $fl; ?></div>
<div>
<div class="home_tn_link"></div>
<div class="home_tn_link"></div>
<div class="home_tn_link"></div>
</div>
</div>
<div>
<div class="title"><?php echo $fl; ?></div>
<div>
<div class="home_tn_link"></div>
<div class="home_tn_link"></div>
<div class="home_tn_link"></div>
</div>
</div>
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
Понял Вас, спасибо за уточнение. Исправил ответ
Добавил общий тег, в котором title и второй раздел и для home_tn_link во втором разделе.
Постарался добавить комментариев. Проверьте, пожалуйста, я верно Вас понял?
<?php
$query = new WP_Query( [
'orderby' => 'title',
'posts_per_page' => -1,
] );
global $post;
if ( $query->have_posts() ) {
$MainDiv = ''; // То, что планируем выводить
while ( $query->have_posts() ) {
$query->the_post();
$fl = mb_substr( $post->post_title, 0, 1 );
if( $fl !== ( $last_fl ?? '' ) ){
$last_fl = $fl;
$MainDiv .= ($MainDiv == '')?'':'</div></div>'; // Если строка уже заполнялась, и это новый title, то необходимо закрыть предыдущий тег div, сначала объединяющий home_tn_link, затем закрываем сразу тег ообщего блока, в котором title и блок с home_tn_link
$MainDiv .= '<div><div class="title">'.$fl.'</div><div>'; // Если первая строка, то открываем div в котором будут title и блок с home_tn_link и сразу после title еще один div, в котором будут home_tn_link
} else {
$MainDiv .= '<div class="home_tn_link">'.$post->post_title.'</div>'; // Добавляем в общую переменную home_tn_link
}
}
echo $MainDiv; // Выводим переменную общую на экран.
}