wp_tag_cloud() — как вывести облако категорий, тегов и других таксономий

Вы используете какие-нибудь плагины для вывода рубрик или меток на вашем блоге?

Надеюсь, что нет, потому что в WordPress уже по умолчанию есть функция, позволяющая это сделать, при этом размер шрифта каждой метки/рубрики в облаке будет зависеть от количества постов в ней! Вот пример:

облако тегов или категорий в WordPress

У меня на сайте вы можете лицезреть облако категорий на странице с 404-й ошибкой, правда оно не такое большое, как на картинке, потому что рубрик мало.

В общем вот сама функция:

wp_tag_cloud( $args )

А вот содержимое массива с параметрами $args, в данном примере указаны значения, используемые по умолчанию:

$args = array(
	'smallest'			=> 8, 
	'largest'			=> 22,
	'unit'				=> 'pt', 
	'number'			=> 45,  
	'format'			=> 'flat',
	'separator'			=> '\n',
	'orderby'			=> 'name', 
	'order'				=> 'ASC',
	'exclude'			=> null, 
	'include'			=> null, 
	'topic_count_text_callback'	=> default_topic_count_text,
	'link'				=> 'view', 
	'taxonomy'			=> 'post_tag', 
	'echo'				=> true,
	'child_of'			=> null
);

Описание параметров функции:

smallest
(целое число) минимальный размер шрифта.

largest
(целое число) максимальный размер шрифта.

unit
(строка) единицы измерения размера шрифта, например pt, px, em, %.

number
(целое число) количество отображаемых меток/рубрик/элементов таксономий, если установить значение равным 0, то будут отображены все элементы.

format
(строка) формат вывода облака, может принимать значения:

  • flat — разделять ссылки значением параметра separator,
  • list — вывести в виде маркированного списка <ul class="wp-tag-cloud">,
  • array — возвращает ссылки в виде массива для дальнейшего использования в коде;

separator
(строка) строка-разделитель между ссылками.

orderby
(строка) сортировка выводимых тегов/категорий, может принимать два значения:

  • name — по алфавиту,
  • count — по количеству содержащихся записей;

order
(строка) порядок сортировки:

  • ASC — по возрастанию,
  • DESC — по убыванию,
  • RAND — сортировать в случайном порядке;

exclude
(строка) укажите через запятую ID тегов или рубрик, которые нужно исключить.

include
(строка) укажите через запятую ID тегов или рубрик, которые нужно вывести в облаке.

topic_count_text_callback
(строка) название функции, генерирующей всплывающие подсказки для рубрик, например:

всплывающие подсказки в облаке меток

Для того, чтобы полностью избавиться от подсказок, создайте какую-нибудь свою функцию, ничего не возвращающую, и укажите её в качестве значения этого параметра, например:

function true_no_callback_count( $real_count ) {
	return;
	// return $real_count - отобразить в подсказках количество постов
}

Этот код лучше всунуть в functions.php, а потом уже там, где нужно вывести облако, вставляем:

$args = array(
	'topic_count_text_callback' => true_no_callback_count
);
 
wp_tag_cloud( $args );

link
(строка) куда должны ссылаться ссылки:

  • view — на страницы архивов рубрик/меткок,
  • edit — на страницы редактирования рубрик/меткок;

taxonomy
(строка|массив) именно этот параметр и позволяет вам выбирать, что отображать в облаке — метки, категории или элементы какой-либо другой таксономии, или даже все вместе сразу! По умолчанию выводятся только метки.

Пример с отображением рубрик:

$args = array(
	'taxonomy' => 'category',
);
 
wp_tag_cloud( $args );

Пример с отображением рубрик и меток одновременно:

$args = array(
	'taxonomy' => array('category', 'post_tag'),
);
 
wp_tag_cloud( $args );

echo
(логическое) вывести облако тегов/категорий или же записать его в переменную.

child_of
(целое число) укажите ID рубрики или метки, вложенные элементы которой нужно вывести в облаке.

Комментарии 15

  • ASD20 февраля 2013 в 13:02 #
    Круто
  • Костя23 января 2014 в 20:01 #

    Привет. Все настраивается. Только, как сделать чтобы все существующие теги были по алфавиту, не зависимо от рубрик? Сейчас они по алфавиту, но как-то блоками.

  • Костя24 января 2014 в 16:01 #
    function wp_tag_cloud( $args = '' ) {
    	$defaults = array(
    		'smallest' => 8, 'largest' => 8, 'unit' => 'pt', 'number' => 0,
    		'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC',
    		'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true
    	);
    	$args = wp_parse_args( $args, $defaults );
     
    	$tags = get_terms( $args['taxonomy'], array_merge( $args, array( 'orderby' => 'count', 'order' => 'DESC' ) ) ); // Always query top tags
     
    	if ( empty( $tags ) || is_wp_error( $tags ) )
    		return;
     
    	foreach ( $tags as $key => $tag ) {
    		if ( 'edit' == $args['link'] )
    			$link = get_edit_tag_link( $tag->term_id, $tag->taxonomy );
    		else
    			$link = get_term_link( intval($tag->term_id), $tag->taxonomy );
    		if ( is_wp_error( $link ) )
    			return false;
     
    		$tags[ $key ]->link = $link;
    		$tags[ $key ]->id = $tag->term_id;
    	}
    • Миша24 января 2014 в 22:01 #

      Это код из движка WordPress. Зачем он мне?
      Какие аргументы использовались при вызове?

  • Костя25 января 2014 в 00:01 #

    Видимо, я что-то не догоняю. Скажи мне что за аргументы и где их посмотреть?

  • Костя28 января 2014 в 18:01 #

    Нет идей, значит?

  • Eva19 января 2015 в 18:01 #

    Здравствуйте!
    Подскажите, на сайте (http://nesvitsky.com)установлен этот плагин.
    Когда пользователь нажимает на какую-то метку, то ему выводятся все записи с этой меткой, но выводятся в полном виде. Мне бы хотелось, чтобы по меткам выводилось название записи, картинка и краткое описание, а не весь текст.
    Как это сделать?

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
  • Миша: Привет ещё раз, не поверишь, реально не сталкивался с этим вопросом. По теории можно сказать следующее: во-первых,...

  • Миша: Привет, вообще без проблем, делаешь всё через require(), require_once() - выбирай любую, какая больше нравится.

  • Виталий Моргунов: Привет! Не могу разобаться, как я могу контролировать порядок подключения стилей. В моем случае мне нужно чтобы стили...

  • Миша: Спасибо!

  • w0rmak: Это было просто. Нашел код в интернете. Добавьте и себе ymaps.load(function () { var input = document.getElem...