WordPress как на ладони
wordpress jino

get_the_tags() WP 2.3

Возвращает массив объектов меток текущего поста, каждая метка - это объект. Можно использовать внутри Цикла.

Функция ничего не выводит на экран. Данные нужно обработать: получить из полученного массива и только потом вывести на экран.

Работает на основе: get_the_terms()
Хуки из функции:
Возвращает

Массив объектов. Каждый объект содержит следующие данные:

term_id - ID метки
name - название метки
slug - альтернативное название
term_group - группа, к которой принадлежит метка, если такая имеется
taxonomy - таксономия. Для этого примера всегда 'post_tag'
description - описание метки, указанное в настройках
count - количество записей у метки

Использование

get_the_tags( $id );
$id(число)
ID поста, метки которого нужно получить.

Примеры

1. Базовый пример использования.

Выведем названия меток текущего в цикле поста, разделенные пробелом:

$posttags = get_the_tags();
if ($posttags) {
  foreach($posttags as $tag) {
	echo $tag->name . ' '; 
  }
}
2. Выведем картинки меток поста.

У нас есть картинки в папке image в каталоге сайта, названные по ID меток (12.jpg - картинка для метки 12). Выведем картинки меток текущего поста, в атрибуте alt укажем называние метки:

$posttags = get_the_tags();
if ($posttags) {
  foreach($posttags as $tag) {
	echo '<img src="http://site.ru/images/' . $tag->term_id . '.jpg" 
alt="' . $tag->name . '" />'; 
  }
}
3. Выведем называние только первой метки поста.

Для этого используем условие: if (1 == $count):

$posttags = get_the_tags();
$count=0;
if ($posttags) {
  foreach($posttags as $tag) {
	$count++;
	if (1 == $count) {
	  echo $tag->name . ' ';
	}
  }
}
4. Выведем нужный код, если у поста есть нужная метка.

Этот пример выведет HTML код, в зависимости от того есть у записи определенная метка или нет. Просто добавьте несколько условий else if, как показано в примере:

$all_the_tags = get_the_tags();
if( $all_the_tags ){
	foreach($all_the_tags as $this_tag) {
		if ($this_tag->name == "sometag" ) {
			echo '<p>HTML КОД <img src="someimage.jpg" /></p>';
		} 
		else if ($this_tag->name == "someothertag" ) {
			echo '<p>ДРУГОЙ HTML КОД <img src="someotherimage.jpg"></p>';
		}
		else {  
			// не найдена ни одна метка
		}
	}
}
5. Функция вывода меток в выпадающем списке.
function drop_tags()
{
	echo "<select onChange="document.location.href=this.options[this.selectedIndex].value;">";
	echo "<option>Tags</option>n";
	foreach (get_the_tags() as $tag)
	{
		echo "<option value="";
		echo get_tag_link($tag->term_id);
		echo "">".$tag->name."</option>n";
	}
	echo "</select>";
}

Код get the tags: wp-includes/category-template.php VER 4.9.1

<?php
function get_the_tags( $id = 0 ) {

	/**
	 * Filters the array of tags for the given post.
	 *
	 * @since 2.3.0
	 *
	 * @see get_the_terms()
	 *
	 * @param array $terms An array of tags for the given post.
	 */
	return apply_filters( 'get_the_tags', get_the_terms( $id, 'post_tag' ) );
}

Cвязанные функции

Из метки: loop (Цикл WP)

Еще из раздела: Для записей

get_the_tags 5 комментариев
  • bl79 cайт: compdengi.ru

    В 4 примере в коде 1я строка должна быть на месте 2й. +фигурные скобки поправить

    Ответить4 года назад #
  • А как вывести только уникальные метки?
    Т.е. в выборке, например, 10 записей, 3 из которых имею метку "пластик" и 1 имеет метку "дерево".

    У меня сейчас выводятся все метки: пластик, пластик, пластик, дерево.
    А нужно: пластик, дерево.

    Вывод происходит на странице taxonomy-catalog.php

    $queired_obj = get_queried_object();
    $term = $queired_obj->slug;
    
    $args = array(
    	'post_type' => 'mbds_products',
    	'tax_query' => array(
    		array(
    			'taxonomy' => 'catalog',
    			'field'    => 'slug',
    			'terms'    => $term
    		)
    	)
    );
    
    $query = new WP_Query( $args );
    while ( $query->have_posts() ) : $query->the_post();
    
    	if( get_the_tag_list() ){
    		echo get_the_tag_list('<ul><li class="child_cat_group_li fl-l">','</li><li>','</li></ul>');
    	}
    
    wp_reset_postdata();
    endwhile;
    wp_reset_query();

    Спасибо!

  • Полина

    А как вывести количество постов определенной метки?

    Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий
Предпросмотр