Здравствуйте. У меня есть словарь в wordpress. Записи выводятся по буквам. Вот код:
<?php
$posts = get_posts( array ( 'post_type' => 'dictionary', 'order' => 'ASC', 'orderby' => 'title', 'caller_get_posts'=>1, 'posts_per_page' => -1 ) );
foreach( $posts as $k => $post ){
// первая буква
$fl = get_first_letter( $post->post_title );
$prev_fl = isset( $posts[ ($k-1) ] ) ? get_first_letter( $posts[ ($k-1) ]->post_title ) : '';
if( $prev_fl !== $fl )
// Буква
echo '<div class="dictionary-block"><div class="padding-block"><b>'.$fl.'</b><ul class="dictionary-list">'; ?>
<li><strong><?php the_title() ?></strong><p><?php the_field("desc") ?></p><a href="<?php the_field("url") ?>" class="link">Подробнее</a></li></ul></div></div>
<?php }
wp_reset_postdata();
function get_first_letter( $str ){
return mb_substr($str, 0, 1, 'utf-8');
} ?>
Если в блоке с одной буквой одна запись - все работает прекрасно, например:
А
Абрикос
Б
Баранка
В
Вертолет
НО! Если больше двух - слетает шаблон:
А
Ананас
// в этом месте слетает шаблон
Абрикос
В
Вертолет
Вопрос таков: как переделать этот код, чтобы записи одной буквы выводились в группе? Вот так:
<div class="dictionary-block">
<div class="padding-block">
<b>А</b>
<ul class="dictionary-list">
<li>
<strong>Ананас</strong>
<p>Описание ананаса</p>
<a href="#" class="link">Подробнее</a>
</li>
<li>
<strong>Абрикос</strong>
<p>Описание абрикоса</p>
<a href="#" class="link">Подробнее</a>
</li>
</ul>
</div>
</div>
Т.е. в рамках одной группы списком LI