@turbomen24

Как выделить отдельным div каждую секцию, которую формирует php?

У меня есть функция, которая на wordpress сайте выводит все категории в кастомной таксономии, сортируя их по буквам. Выглядит это следующим образом:

<?php
$terms = get_terms( array(
	'taxonomy'      => 'artist',
) );		
foreach( $terms as $k => $term ){
	$fl = get_first_letter( $term->name );
	$prev_fl = isset( $terms[ ($k-1) ] ) ? get_first_letter( $terms[ ($k-1) ]->name ) : '';
	if( $prev_fl !== $fl )		
echo $fl;		
echo '<li>' . ' <a href="' . get_term_link($term) . '">' . $term->name . '</a> ' . '</li>'; 
} 
}
?>


Выводит она следующее:

A
а категория
а категория 2

B
b категория 3
...

и так далее.

Необходимо, чтобы каждый блок (буква - и все категории на эту букву), были отдельным div классом, например так:

<div class="box-a">
A
а категория
а категория 2
</div>

<div class="box-b">
B
b категория 3
</div>

Например, я могу вывести в отдельный класс каждую букву (заголовок секции) , таким образом:
Заместо echo $fl;написать
echo '<div class="letter-' . $fl . '">' . $fl . '</div>';


Тогда каждая буква выглядит на выходе так:
<div class="letter-b">B</div>
b категория 3


Тоже самое могу сделать с каждым элементом списка, прописав таким же образом класс для каждого <li>, но это не совсем то, что нужно.
Необходимо именно так сделать , чтобы каждая секция была отдельным классом, чтобы можно было выводить это не только вертикальным списком, но скомпоновав по-разному, вертикально и горизонтально через css.

Надеюсь , вопрос понятно описал. Большое спасибо за ответ.
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Если буква отличается от предыдущей, вывести </div><div>, для этого нужна дополнительная переменная, куда нужно запоминать букву текущей итераци для использования в следующей.
Корректно обработать случай первого и последнего элемента массива (в первом случае вывести просто <div>, во втором - </div>).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы