wp_tag_cloud() WP 2.3.0

Виводить або отримує хмару міток (список міток у вигляді хмари). Можна вказати довільну таксономію.

Щоб вивести елементи довільної таксономії у вигляді хмари, вкажіть назву таксономії у параметрі 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

#1 Базове використання

Виведемо хмару міток із заголовком “Популярні мітки”:

if ( function_exists('wp_tag_cloud') ){
	echo '<h2>Популярні мітки</h2>';
	wp_tag_cloud('smallest=8&largest=22');
}
0

#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>
0

#3 Ще один приклад демонструє передачу різних параметрів

Змінимо розміри міток (smallest=15&largest=40), обмежимо кількість міток, що виводяться (number=50) і відсортуємо їх за кількістю записів, а не по імені (orderby=count):

<?php wp_tag_cloud('smallest=15&largest=40&number=50&orderby=count'); ?>
0

#4 Отримаємо список, не виводитимемо його на екран

Запишемо список у параметр $tag, щоб потім використовувати його у php для своїх цілей:

$tag = wp_tag_cloud('format=array');

print_r ($ tag);
0

#5 Хмара категорій

Виведемо хмару категорій замість хмари міток. Для цього змінимо назву таксономії:

<?php wp_tag_cloud( array( 'taxonomy' => 'category' ) ); ?>
0

#6 Хмара міток та категорій одночасно

Можна зліпити категорії та мітки в одну хмару:

<?php
wp_tag_cloud(array(
	'taxonomy' => array('post_tag','category'),
)));
?>
0

#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 ) );
}
?>
0

#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, тому можлива несумісність з шаблоном.

0

#9 Зміна параметрів за замовчуванням для віджету хмари позначок через фільтр

Допустимо, нам потрібно зменшити максимальний розмір шрифту для віджету з хмарою міток. Потрібно поставити значення 16, а чи не 22для параметра 'largest'. Для цього використовуємо хук widget_tag_cloud_args

add_filter( 'widget_tag_cloud_args', function( $args ){
	$args['largest'] = 16;

	return $args;
} );

На цей приклад мене підштовхнув цей комменатрій

0

#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.0Added the taxonomy argument.
З версії 4.8.0Added the show_count argument.

Код wp_tag_cloud() WP 6.0.2

function wp_tag_cloud( $args = '' ) {
	$defaults = array(
		'smallest' => 8,
		'largest' => 22,
		'unit' => 'pt',
		'number' => 45,
		'format' => 'flat',
		'separator' => "n",
		'orderby' => 'name',
		'order' => 'ASC',
		'exclude' => '',
		'include' => '',
		'link' => 'view',
		'taxonomy' => 'post_tag',
		'post_type' => '',
		'echo' => true,
		'show_count' => 0,
	);

	$ args = wp_parse_args ($ args, $ defaults);

	$tags = get_terms(
		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_term_link( $tag, $tag->taxonomy, $args['post_type'] );
		} else {
			$link = get_term_link($tag, $tag->taxonomy);
		}

		if ( is_wp_error( $link ) ) {
			return;
		}

		$tags[ $key ]->link = $link;
		$tags[ $key ]->id = $tag->term_id;
	}

	// Тут ви знайдете вище tags get sorted according to $args.
	$ return = wp_generate_tag_cloud ($ tags, $ args);

	/**
	 * Filters the tag cloud output.
	 *
	 * @ Since 2.3.0
	 *
	 * @param string|string[] $return Tag cloud є string або array, depending on 'format' argument.
	 * @param array $args На array of tag cloud arguments. See wp_tag_cloud()
	 * for information on accepted arguments.
	 */
	$return = apply_filters( 'wp_tag_cloud', $return, $args);

	if ( 'array' === $args['format'] || empty( $args['echo'] ) ) {
		return $return;
	}

	echo $return;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *