Функция wp_generate_tag_cloud()
в WordPress генерирует «облако меток» (или тепловую карту) на основе переданных данных терминов, как правило, меток или категорий. Она позволяет вывести метки с различными размерами шрифта, в зависимости от их популярности (количества связанных записей). Это визуально привлекающий способ представить метки на сайте.
wp_generate_tag_cloud( WP_Term[] $tags, string|array $args = '' ): string|string[]
Параметры
- $tags (обязательный) — массив объектов
WP_Term
, для которых нужно сгенерировать облако меток. - $args (необязательный) — строка или массив аргументов для настройки отображения облака.
Основные параметры $args
:
- smallest (int) — минимальный размер шрифта для меток. Определяется в единицах, указанных в параметре
unit
. По умолчанию: 8 pt. - largest (int) — максимальный размер шрифта для меток. Определяется в единицах, указанных в параметре
unit
. По умолчанию: 22 pt. - unit (string) — единицы измерения для параметров
smallest
иlargest
. Принимает любые CSS единицы: pt, px, em, %. По умолчанию: ‘pt’. - number (int) — количество меток для отображения. Если указано 0, выводятся все метки. По умолчанию: 0 (все метки).
- format (string) — формат вывода облака меток. Может быть:
flat
(по умолчанию) — метки разделены текстом, указанным в параметреseparator
;list
— метки отображаются в виде списка (UL/LI);array
— возвращает массив для дальнейшей обработки.
- separator (string) — разделитель между метками при формате
flat
. По умолчанию: «\n». - orderby (string) — сортировка меток по имени (
name
) или количеству записей (count
). По умолчанию: ‘name’. - order (string) — порядок сортировки меток. Может быть:
ASC
(по возрастанию);DESC
(по убыванию);RAND
(случайный порядок).
По умолчанию: ‘ASC’.
- show_count (bool) — отображать количество записей рядом с меткой. По умолчанию:
false
. - topic_count_text_callback (callable) — функция для изменения текста с количеством записей для каждой метки. По умолчанию:
default_topic_count_text
.
Пример использования
Допустим, мы хотим вывести облако меток на основе всех доступных категорий в WordPress. Для этого мы можем использовать следующую конфигурацию:
$terms = get_terms( array( 'taxonomy' => 'category' ) ); // Получаем все категории
$args = array(
'smallest' => 10, // минимальный размер шрифта
'largest' => 30, // максимальный размер шрифта
'unit' => 'px', // единица измерения для шрифта
'number' => 0, // показывать все метки
'format' => 'list', // вывод в виде списка
'separator' => ', ', // разделитель между метками в формате flat
'orderby' => 'count', // сортировать по количеству записей
'order' => 'DESC', // в порядке убывания
'show_count' => true, // показывать количество записей
);
$cloud = wp_generate_tag_cloud( $terms, $args );
echo $cloud; // выводим облако меток
Этот код сгенерирует облако категорий с метками, отсортированными по количеству записей, от больших к меньшим. Метки будут отображаться в виде списка (<ul>
), и рядом с каждой меткой будет указано количество записей.
Пример с массивом меток
Если вам нужно не выводить облако меток напрямую, а получить его в виде массива для дальнейшей обработки, можно использовать формат array
:
$terms = get_terms( array( 'taxonomy' => 'post_tag' ) ); // Получаем все метки
$args = array(
'format' => 'array', // возвращаем результат в виде массива
'orderby' => 'name', // сортируем по имени
'order' => 'ASC',
);
$tag_cloud = wp_generate_tag_cloud( $terms, $args );
// Выведем все метки в виде списка с помощью цикла
if ( is_array( $tag_cloud ) ) {
echo '<ul>';
foreach ( $tag_cloud as $tag_html ) {
echo '<li>' . $tag_html . '</li>';
}
echo '</ul>';
}
В этом примере мы получаем массив HTML-кода меток и выводим его через цикл foreach
.
Фильтры и хуки
Функция wp_generate_tag_cloud()
содержит несколько полезных фильтров, которые позволяют кастомизировать результат:
tag_cloud_sort
— позволяет изменять порядок сортировки меток.wp_generate_tag_cloud_data
— фильтрует массив данных меток до их рендеринга.wp_generate_tag_cloud
— фильтрует HTML-вывод облака меток.
Заключение
Функция wp_generate_tag_cloud()
— мощный инструмент для вывода облака меток или категорий на сайте WordPress. Она позволяет гибко настраивать внешний вид меток, их сортировку и форматирование. Благодаря множеству параметров и фильтров, разработчики могут адаптировать отображение меток в соответствии с дизайном и функциональными требованиями проекта.