wp_tag_cloud()
Виводить або отримує хмару міток (список міток у вигляді хмари). Можна вказати довільну таксономію.
Щоб вивести елементи довільної таксономії у вигляді хмари, вкажіть назву таксономії у параметрі taxonomy
.
“Хмара міток” називається так, тому що розмір тексту кожної мітки залежить від того, скільки записів пов’язано з міткою. Чим більше записів, тим більше буде текст мітки (у результаті виходить щось схоже на хмару).
З версії 2.8 було додано параметр taxonomy , що дозволяє створювати хмару як стандартних міток, але й у категорій і довільних таксономий.
wp_generate_tag_cloud()
Хуки з функції
Повертає
null|Строку|Строку[]
. Виводить на екран html код списку.
- Повертає HTML, якщо параметр echo = false .
- Поверне масив хмар міток, якщо параметр format = array .
- false, якщо не вдалося одержати мітки.
Шаблон використання
wp_tag_cloud ([ 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 'format' => 'flat', 'separator' => "n", 'orderby' => 'name', 'order' => 'ASC', 'exclude' => null, 'include' => null, 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true, 'topic_count_text_callback' => 'default_topic_count_text', ]);
Використання
<?php wp_tag_cloud( $args ); ?>
-
$args
(рядок/масив) -
Аргументи, на основі яких буде збудовано список.
Типово: базові значення
Аргументи параметра $args
У $args також можна вказати всі параметри функції get_terms() .
-
smallest
(число) -
Розмір тексту для позначок з
меншою кількістю записів (одиниці вимірювання вказуються в параметрі unit).
Типово: 8 -
largest
(число) -
Розмір тексту для позначок з
великою кількістю записів (одиниці вимірювання вказуються в параметрі unit).
За замовчуванням: -
unit
(рядок) -
Одиниці виміру параметрів
smallest і
largest . Можливо будь-яким CSS типом розміру:
pt
,
px
,
em
,
%
.
За замовчуванням: ‘pt’ -
number
(число) -
Максимальна кількість позначок, яка буде показана у списку. Якщо встановити на
0
, то будуть показані всі мітки без обмеження.
Типово: 45 -
format
(рядок) У якому форматі виводитиме список. Може бути:
flat
– мітки будуть розділені роздільником, вказаним у параметрі separator ;list
– UL список із CSS класом ‘wp-tag-cloud’;array
– Поверне хмару міток у масиві для подальшої обробки в PHP.
За замовчуванням: ‘flat’
-
separator
(рядок) -
Текст між позначки.
За замовчуванням: n -
orderby
(рядок) -
Сортувати мітки на ім’я (name) або кількість записів (count). Не впливає на запит до бази даних.
За замовчуванням: ‘name’ -
order
(рядок) Порядок сортування. Може бути:
ASC
– По порядку (1,2,3);DESC
– у зворотному порядку (3,2,1);RAND
– Хаотичний порядок (перемішати).
order та orderby не впливають на запит до бази даних. Мітки спочатку виходять із бази даних, потім сортуються. Ці параметри для отримання бази даних рівні: orderby=count і order=DESC і їх не можна змінити.
За замовчуванням: ‘ASC’-
exclude
(рядок) -
Виключити зазначені позначки. Вказувати потрібно ID через кому.
Типово: null -
include
(рядок) -
Показати тільки вказані позначки. Вказувати потрібно ID через кому.
Типово: null -
topic_count_text_callback
(рядок/масив) -
Функція, яка отримує кількість записів та повертає текст для мітки. Можна встановити свою функцію, якщо потрібно відображати будь-який інший текст із кількістю записів для кожної мітки.
За замовчуванням: default_topic_count_text -
link
(рядок) Куди вестиметься посилання мітки.
view
– після натискання на мітку, потрапимо на сторінку мітки;edit
– після натискання на мітку, потрапимо на сторінку редагування мітки.
Типово: view
-
taxonomy
(рядок/масив) Назва таксономії або масив кількох назв, з яких буде збудовано хмару. Може бути:
post_tag
;category
;link_category
;Своя таксономия
;Массив названий таксономий
– параметр введено у версії 3.1.
Типово: post_tag
-
show_count
(логічний) - Чи показувати кількість записів у мітці. За замовчуванням 0. Можливо: 0, 1 або true/false. З WP 4.8.
-
echo
(логічний) -
1 – Виводити на екран, 0 – повертати результат для подальшої обробки.
Типово: 1 (true)
Приклади
#1 Базове використання
Виведемо хмару міток із заголовком “Популярні мітки”:
if ( function_exists('wp_tag_cloud') ){ echo '<h2>Популярні мітки</h2>'; wp_tag_cloud('smallest=8&largest=22'); }
#2 Що повертає функція
wp_tag_cloud( 'smallest=8&largest=22' );
Виведе на екран:
<a href="https://example.com/tag/ajax" class="tag-cloud-link tag-link-134 tag-link-position-1" style="font-size: 13.283018867925pt;" aria-label="AJAX (4 елементи)">AJAX</a> <a href="https://example.com/tag/chrome" class="tag-cloud-link tag-link-1603 tag-link-position-2" style="font-size: 8pt;" aria-label="Chrome (1 element)">Chrome</a> <a href="https://example.com/tag/css" class="tag-cloud-link tag-link-531 tag-link-position-3" style="font-size: 13.283018867925pt;" aria-label="CSS (4 елементи)">CSS</a> ...
Перелік:
wp_tag_cloud ([ 'format' => 'list', ]);
Виведе:
<ul class='wp-tag-cloud' role='list'> <li><a href="https://site.com/met/ajax" class="tag-cloud-link tag-link-134 tag-link-position-1" style="font-size: 13.283018867925pt ;" aria-label="AJAX (4 елементи)">AJAX</a></li> <li><a href="https://site.com/met/chrome" class="tag-cloud-link tag-link-1603 tag-link-position-2" style="font-size: 8pt; " aria-label="Chrome (1 elements)">Chrome</a></li> ... </ul>
#3 Ще один приклад демонструє передачу різних параметрів
Змінимо розміри міток (smallest=15&largest=40), обмежимо кількість міток, що виводяться (number=50) і відсортуємо їх за кількістю записів, а не по імені (orderby=count):
<?php wp_tag_cloud('smallest=15&largest=40&number=50&orderby=count'); ?>
#4 Отримаємо список, не виводитимемо його на екран
Запишемо список у параметр $tag, щоб потім використовувати його у php для своїх цілей:
$tag = wp_tag_cloud('format=array'); print_r ($ tag);
#5 Хмара категорій
Виведемо хмару категорій замість хмари міток. Для цього змінимо назву таксономії:
<?php wp_tag_cloud( array( 'taxonomy' => 'category' ) ); ?>
#6 Хмара міток та категорій одночасно
Можна зліпити категорії та мітки в одну хмару:
<?php wp_tag_cloud(array( 'taxonomy' => array('post_tag','category'), ))); ?>
#7 Зміна тексту атрибуту title у тега <a>
При наведенні на посилання відображається кількість записів мітки. Щоб змінити цей текст, можна використовувати параметр topic_count_text_callback
, в якому вкажемо свою функцію для створення тексту:
<?php wp_tag_cloud( array( 'topic_count_text_callback' => 'my_tag_text_callback' ) ); function my_tag_text_callback( $count ) { return sprintf( _n('%s картинка', '%s картинок', $count), number_format_i18n( $count ) ); } ?>
#8 Архів тегів
Як один із варіантів використання міток, пропоную створити архівні сторінки міток. При натисканні на певну мітку, ми потрапляємо на сторінку з постами, пов’язаними з цією міткою. Як виглядає така сторінка, визначається файлом шаблону tag.php
, якщо такого файлу немає (зазвичай його ент), то формування виводу віддається файлу archives.php
.
Давайте зробимо сторінку мітки, на якій на початку буде показано хмару міток, а після нього записи, що відносяться до обраної мітки. Для цього створимо (якщо ні) або змінимо (якщо існує) файл tag.php. Створювати файл потрібно у каталозі теми.
Вміст файлу tags.php:
<?php /* Template Name: Tag Archive */ ?> <?php get_header(); ?> <div> <h2>Tag Archive</h2> <?php wp_tag_cloud(''); ?> <div class="navigation"> <div class="alignleft"><?php next_posts_link( '« Older Entries' ) ?></div> <div class="alignright"><?php previous_posts_link( 'Newer Entries »' ) ?></div> </div> <?php if( have_posts() ) { while( have_posts() ) { the_post(); ?> <h2> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php esc_attr( get_the_title() ) ?>"><?php the_title() ?></a> </h2> <div class="entry"> <?php the_content( 'Read the rest of this entry »' ); ?> </div> <?php } } ?> </div> <?php get_footer(); ?>
У цьому прикладі не враховуються стилі CSS, тому можлива несумісність з шаблоном.
#9 Зміна параметрів за замовчуванням для віджету хмари позначок через фільтр
Допустимо, нам потрібно зменшити максимальний розмір шрифту для віджету з хмарою міток. Потрібно поставити значення 16
, а чи не 22
для параметра 'largest'
. Для цього використовуємо хук widget_tag_cloud_args
add_filter( 'widget_tag_cloud_args', function( $args ){ $args['largest'] = 16; return $args; } );
На цей приклад мене підштовхнув цей комменатрій
#10 Отримаємо OL список та додамо клас до LI елементів
Потрібно щоб, використовуючи аргумент ‘format’, посилання виводилися над UL, а OL списку. Також потрібно додати CSS клас до LI елементів.
$cloud = wp_tag_cloud([ 'format' => 'list', 'echo' => false, ]); $cloud = str_replace( [ '<ul ','</ul>' ], [ '<ol ','</ol>' ], $cloud ); $cloud = str_replace( '<li>', '<li class="cloud-li-class">', $cloud ); echo $cloud;
Результат:
<ol class='wp-tag-cloud' role='list'> <li class="cloud-li-class"><a href="/met/ajax" class="tag-cloud-link tag-link-134 tag-link-position-1" style="font-size: 13.283018867925pt;" aria-label="AJAX (4 елементи)">AJAX</a></li> <li class="cloud-li-class"><a href="/met/chrome" class="tag-cloud-link tag-link-1603 tag-link-position-2" style="font-size: 8pt;" aria-label="Chrome (1 елемент)">Chrome</a></li> ... </ol>
список змін
З версії 2.3.0 | Введено. |
З версії 2.8.0 | Added the taxonomy argument. |
З версії 4.8.0 | Added the show_count argument. |