Не секрет, що на форумах можна знайти багато рішень побудови коду 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); ?> |