Не секрет, що на форумах можна знайти багато рішень побудови коду WordPress. Але, недавно я зіткнувся з проблемою, яка мені здалася не зовсім проблемою, хоча підказок від розробників так і не побачив у мережі.

Завдання було наступним:
потрібно вивести список усіх таксономій з алфавітним вказівником. Плагінів або шматків коду в мережі достатньо, ПРОТЕ всі вони без підтримки кирилиці.

Для оформлення списків використав стилі Bootstrap і дуже сподіваюся, що моє рішення (без встановлення додаткових плагінів) допоможе вам:

<?php 
$l=0; // Просто лічильник для літер
$list = '</p>
<div class="row">
<div class="col-sm-6"><p>'; // Оболонка списку таксономій
$index_line = '</p>
<nav>
<ul class="pagination pagination-sm">'; //Оболонка вказівника алфавіту
$args = array(
'hide_empty' => true, // Встановіть true, щоб приховати таксономії без записів.
);
$tags = get_terms('YOUR_TAXONOMY',$args); // замініть "YOUR_TAXONOMY" на потрібну, наприклад, для woocommerce це "product_category"
$groups = array( );
if( $tags && is_array( $tags ) ) {
foreach( $tags as $tag ) {
$first_letter=mb_strtoupper(mb_substr($tag->name, 0, 1, 'utf-8'));
$groups[ $first_letter ][] = $tag;
}
if( !empty( $groups ) ) {
 
foreach( $groups as $letter => $tags ) {
$l++;
$index_line .= '</p>
<li><a class="scrollto" href="#letter-'.$l.'">' . apply_filters( 'the_title', $letter ) . '</a></li>
<p>';
$list .= '</p>
<div id="letter-'.$l.'">
<h4><strong>' . apply_filters( 'the_title', $letter ) . '</strong></h4>
<ul class="artists">';
foreach( $tags as $tag ) {
$name = apply_filters( 'the_title', $tag->name );
$list .= '</p>
<li><a href="' . get_term_link( $tag ) . '" title="' . sprintf(__('Все записи из %s', 'yourtheme'), $tag->name) . '">' . $tag->name . ' <small>(' . $tag->count . ')</small></a></li>
<p>';
}
$list .= '</ul>
</div>
<p>';
// Задаємо умову для останньої літери латинського алфавіту, щоб розділити блоки на кирилицю та латиницю
if ($letter=='Z') {
$index_line.='</ul>
</nav>
<nav>
<ul class="pagination pagination-sm">';
$list.='</div>
<div class="col-sm-6">';
}
}
$index_line.='</ul>
</nav>
<p>';
$list .= '</div>
</div>
<p>';
}
} else $list .= '</p>
<p>Дуже шкода, але нічого не знайдено</p>
<p>';
 
print ($index_line);
print ($list);
?>