wp_tag_cloud() WP 2.3
Выводит или получает облако меток (список меток в виде облака). Можно указать произвольную таксономию.
Чтобы вывести элементы произвольной таксономии в виде облака, укажите название таксономии в параметре taxonomy.
"Облако меток" называется так, потому что размер текста каждой метки зависит от того, сколько записей связано с меткой. Чем больше записей, тем больше будет текст метки (в итоге получается нечто похожее на облако).
С версии 2.8 был добавлен параметр taxonomy, позволяющий создавать облако не только для стандартных меток, но и для категорий и произвольных таксономий.
wp_generate_tag_cloud()
Хуки из функции
Возвращает
null. Выводит на экран html код списка.
- Возвращает HTML, если параметр
echo = false
. - Вернет массив облака меток, если параметр
format = array
. - false, если не удалось получить метки.
Шаблон использования
wp_tag_cloud( array( '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 Базовое использование
Выведем облако меток с заголовком "Популярные метки":
<?php if ( function_exists('wp_tag_cloud') ){ echo '<h2>Популярные метки</h2>'; wp_tag_cloud('smallest=8&largest=22'); } ?>
#1.2. Еще одни пример демонстрирующий передачу разных параметров
Изменим размеры меток (smallest=15&largest=40), ограничим количество выводимых меток (number=50) и отсортируем их по количеству записей, а не по имени (orderby=count):
<?php wp_tag_cloud('smallest=15&largest=40&number=50&orderby=count'); ?>
#2 Получим список, не будем выводить его на экран
Запишем список в параметр $tag, чтобы потом использовать его в php для своих целей:
<?php $tag = wp_tag_cloud('format=array' );?>
#3 Облако категорий
Выведем облако категорий, вместо облака меток. Для этого изменим название таксономии:
<?php wp_tag_cloud( array( 'taxonomy' => 'category' ) ); ?>
#3.1. Облако меток и категорий одновременно
Можно слепить категории и метки в одно облако:
<?php wp_tag_cloud( array( 'taxonomy' => array('post_tag','category'), ) ); ?>
#4 Изменение текста атрибута 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 ) ); } ?>
#5 Архив меток
Как один из вариантов использования меток, предлагаю создать архивные страницы меток. При клике на определенную метку, мы попадаем на страницу с постами связанными с этой меткой. Как выглядет такая страница, определяется файлом шаблона 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()) : ?> <?php while (have_posts()) : the_post(); ?> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2> <div class="entry"> <?php the_content('Read the rest of this entry »'); ?> </div> <?php endwhile; ?> <?php endif; ?> </div> <?php get_footer(); ?>
В данном примере не учитываются CSS стили, поэтому возможна несовместимость с шаблоном.
#6 Изменение параметров по умолчанию для виджета облака меток через фильтр
Допустим, нам нужно уменьшить максимальный шрифты для виджета с облаком меток. Нужно поставить значение 16, а не 22 для параметра 'largest'. Для этого используем хук widget_tag_cloud_args
add_filter('widget_tag_cloud_args', function( $args ){ $args['largest'] = 16; return $args; });
На этот пример меня подтолкнул этот комменатрий
Заметки
- В версии 3.1 добавлен возможность передавать массивы в параметр taxonomy;
- В версии 2.9 добавлен параметр separator;
- В версии 2.8 добавлены параметры taxonomy и echo;
- В версии 2.7 добавлен параметр link;
Список изменений
С версии 2.3.0 | Введена. |
С версии 4.8.0 | Added the show_count argument. |
Функция изменения параметров стандартного виджета облако меток . Может кому пригодится) Все изменения в файле function.php
Спасибо за коммент, добавил это в примеры. И там у тебя немного не нормально сделано - не нужно указывать все параметры, можно указать только один который хочешь изменить...
Здравствуйте! Может быть тут подскажут знающие люди.
Есть категория, пусть будет "игры", в ней много постов, у каждого поста тэги, допустим "игра1", "игра2", "игра3".
Как на странице категории "Игры" вывести тэги, которые используются в данной категории?
Получи ID всех записей из рубрики см. get_posts() и передай все эти ID в параметр
object_ids
этой функции вwp_tag_cloud()
. Так ты получишь облако тегов, которые используются записями в рубрике...Параметр
object_ids
описан в функции get_terms()Представляю какая будет нагрузка, если записей в рубрике будет много. Хотя для получения ID можно использовать wp_query с аргументом "fields"=>"ids", то может и неплохо по итогу выйдет.
Добрый день! Помогите, пожалуйста!
Работаю с wordpress несколько недель и чем дальше, тем больше задач, с которыми не могу справиться самостоятельно.
В данный момент безуспешно пытаюсь найти решение для облака меток, позволяющее выводить только метки ТЕКУЩЕЙ записи, а не все популярные. Как я понял стандартный виджет "тонкой" настройке в этой части не поддаётся, а вторгаться в исходники в wp-includes на форумах настоятельно не рекомендуют.
Как быть?
Правильно ли я понимаю, что мне нужно прописать "свою" таксонометрию?
Существуют ли другие значения аргументов для taxonomy, помимо стандартного 'post_tag', возвращающего все метки?
Еще раз повторюсь, что мне необходимо выводить в облаке только метки ТЕКУЩЕЙ записи, вместо всех популярных.
С уважением,
Вячеслав
Привет. А смотрели функции get_the_tags или the_tags? Они возвращают метки текущего поста, правда не в виде облака, а как захотите. То есть получили метки поста, а как вёрстку берете уже на себя.
Спасибо огромное!!! С Вашей подачи стал разбираться, а дальше сделал следующее:
Во-первых в functions.php вставил следующий код (для чтения php из виджета "текст"):
Во-вторых прописал в виджете "Текст":
Всё получилось! Теперь постараюсь оформить текстовый виджет как облако...
Все правильно?
По мне так вставлять в виджет исполняемый код (php) не лучшая идея, так как это небезопасно. Я бы это сделал с помощью шоткода. И разрешил шоткодам обрабатываться в виджетах (пример №4).
Почему бы не отредактировать шаблон нужной страницы и не использовать
<?php the_tags( 'Tags: ', ', ', '' ); ?>
там? По какой причине надо вставлять его именно в виджет?И ещё - почему именно облако? У вашей записи так много меток, что надо облако?
В первую очередь хочу поблагодарить Вас, что откликнулись на мой вопрос и поддерживаете связь! )
Пытаюсь освоить эту науку, но пока тяжеловато )

Попробую объяснить и приложить скриншот для наглядности...
Это скриншот моего блога о памятниках Москвы … Собственно из-за желания его создать мне и пришлось погрузиться в волшебный мир wordpress
По поводу облака – мне в общем-то не облако нужно как таковое, а вот такой вот блок-виджет расположенный сверху (это как раз и есть стандартный виджет wp «облако меток»). Мне очень нравится его оформление, но не устраивает отображение всех популярных меток, поскольку мне нужны только те метки, которые присвоены текущей записи (статье).
А виджет, который расположен ниже – это то, что я пытаюсь сейчас сделать самостоятельно. Метки текущей записи у меня вывести получилось, а вот как сделать такое же оформление – пока еще не могу разобраться…
Другими словами, я хочу добиться такого же оформления как у верхнего блока (виджета), но только для текущей записи.
Надеюсь смог объяснить и простите за мой зеленый непрофессионализм!
Всегда пожалуйста, приходите ещё) По сути, к ссылкам надо добавить css классы, чтобы повторить оформление того блока. Я не знаю, какие классы у тех ссылок, что нравятся. Давайте страничку, чтобы можно было поглядеть. Иначе копайте в эту сторонку
повторение стилей
Конечно, вот ссылка! ) У меня секретов нет, даже буду рад, если будете посещать мою страничку
http://moscowme.ru/
Честно говоря что такое "css" и как их копировать пока не представляю ...

Знаю, что можно посмотреть текущий код, нажав правую кнопку мыши, но как с ним работать ...
Попробуйте вот так вставить в виджет:
Спасибо!!! поменял в строке: и вот как вышло: http://moscowme.ru/pervyy-bulvar/
Делаю архив меток, но в нем не появляется пагинация.
Если в код добавить $GLOBALS['wp_query']->max_num_pages = 5;, то на странице появится пагинация ровно на пять страниц (не зависит от количества постов с этим тегом), но при переходе на следующую страницу (/page/2) появляется ОШИБКА 404 (СТРАНИЦА 2).
Что я делаю не так?
Тебе надо глобальный объект
$wp_query
подменить...Здравствуйте. Скажите, пожалуйста, можно ли выводить метки с ограничением по времени, то есть, к примеру, только те метки, которые использовались за последний год?
Нет, у меток нет даты создания или чего-то такого. Можно её добавить в метаполя и по ним ориентироваться, но это уже другая история...
Понятно. Спасибо.
А вот как бы сказать этой функции, чтобы меняла не размер, а прозрачность тегов?
Здравствуйте, очень полезные статьи и все перепробовал у себя. Но скажите пожалуйста или подскажите, как выводить метки из определенной категории. То есть возможно сделать, все метки из одной категории выводить на определенной странице, в этой же категории.