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

wp_get_post_tags() WP 2.3

Получает список меток указанного поста в виде массива.

Работает на основе: wp_get_post_terms()
✈ 1 раз = 0.00120с = очень медленно | 50000 раз = 51.1с = очень медленно

Хуков нет.

Возвращает

Массив меток поста.

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

wp_get_post_tags( $post_id, $args );
$post_id(число)
ID поста.
$args(массив)
Переписывает аргументы по умолчанию. Весь список аргументов смотрите в описании функции wp_get_object_terms().
По умолчанию: array()

Примеры

#1. Получим метки текущего поста

Допустим пост имеет следующие метки: tag2, tag5 и tag6:

$t = wp_get_post_tags($post->ID);
print_r($t);

В результате мы получим следующий код:

Array
(
   [0] => stdClass Object
	   (
		   [term_id] => 4
		   [name] => tag2
		   [slug] => tag2
		   [term_group] => 0
		   [term_taxonomy_id] => 4
		   [taxonomy] => post_tag
		   [description] => 
		   [parent] => 0
		   [count] => 7
	   )

   [1] => stdClass Object
	   (
		   [term_id] => 7
		   [name] => tag5
		   [slug] => tag5
		   [term_group] => 0
		   [term_taxonomy_id] => 7
		   [taxonomy] => post_tag
		   [description] => 
		   [parent] => 0
		   [count] => 6
	   )

   [2] => stdClass Object
	   (
		   [term_id] => 16
		   [name] => tag6
		   [slug] => tag6
		   [term_group] => 0
		   [term_taxonomy_id] => 16
		   [taxonomy] => post_tag
		   [description] => 
		   [parent] => 0
		   [count] => 2
	   )

)

#2. Получим список ID меток текущего поста

В списке будут только ID меток (поле ids):

global $post;
$tag_ids = wp_get_post_tags( $post->ID, array( 'fields' => 'ids' ) );

$tag_ids будет содержать:

[4, 7, 16]

Код wp get post tags: wp-includes/post.php WP 4.8.2

<?php
function wp_get_post_tags( $post_id = 0, $args = array() ) {
	return wp_get_post_terms( $post_id, 'post_tag', $args);
}

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

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

Раскрутка сайатов www.seop.ru

раскрутка сайатов www.seop.ru

www.seop.ru

wp_get_post_tags 6 комментариев
  • Kama4489 @

    Здравствуйте, вопрос уже по сути в теме, но всё же напишу подробней.

    Как вывести все имена меток записи известно, а как вывести имя, допустим, метки, которая идёт первой к записи, порядку они какому-то подчиняются?

    Суть в чём?
    Этот код выводит похожие записи для метки, которая прописана для записи первой:

    <ul> 
    	<?php 
    	//for use in the loop, list 5 post titles related to first tag on current post 
    	$tags = wp_get_post_tags($post->ID); 
    	if ($tags) { 
    		$first_tag = $tags[0]->term_id; 
    
    		$args=array( 
    			'tag__in' => array($first_tag), 
    			'post__not_in' => array($post->ID), 
    			'showposts'=>5, 
    			'caller_get_posts'=>1 
    		); 
    		$my_query = new WP_Query($args); 
    
    		if( $my_query->have_posts() ) {
    			while ($my_query->have_posts()){ 
    				$my_query->the_post(); ?> 
    				<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail(array(100, 100)); ?><?php the_title(); ?></a></li> 
    				<?php 
    			}
    		} 
    		wp_reset_query(); 
    	} 
    	?> 
    </ul>

    Этот код отличающийся одним символом (вместо 0 - 1) выводит похожие записи для второй метки:

    <ul> 
    	<?php 
    	//for use in the loop, list 5 post titles related to first tag on current post 
    	$tags = wp_get_post_tags($post->ID); 
    	if ($tags) { 
    		$first_tag = $tags[1]->term_id; 
    		$args=array( 
    			'tag__in' => array($first_tag), 
    			'post__not_in' => array($post->ID), 
    			'showposts'=>5, 
    			'caller_get_posts'=>1 
    		); 
    		$my_query = new WP_Query($args);
    
    		if( $my_query->have_posts() ) { 
    			while ($my_query->have_posts()){ $my_query->the_post(); ?> 
    			<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail(array(100, 100)); ?><?php the_title(); ?></a></li> 
    			<?php 
    			} 
    		} 
    		wp_reset_query(); 
    	}
    	?> 
    </ul>

    Так вот можно вывести имена самих меток по отдельности, сначала первой, потом второй в шаблоне?

    Чтобы это выглядело так:
    Похожие записи с меткой [1]
    перечисление записей


    Похожие записи с меткой [2]
    перечисление записей

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

    Ответить4 года назад #
    • Kama4489

      Название метки лежит в переменной $tags[0]. Для первой метки тут: $tags[0]->name. Вынесем название за пределы ul, вот ваш код для первой метки:

      <?php 
      //for use in the loop, list 5 post titles related to first tag on current post 
      $tags = wp_get_post_tags($post->ID); 
       ?>
      <div class="tag_name"><?php echo $tags[0]->name ?></div>
      <ul> 
      	<?php 
      	if ($tags) { 
      		$first_tag = $tags[0]->term_id; 
      		$args=array( 
      			'tag__in' => array($first_tag), 
      			'post__not_in' => array($post->ID), 
      			'showposts'=>5, 
      			'caller_get_posts'=>1 
      		); 
      		$my_query = new WP_Query($args); 
      
      		if( $my_query->have_posts() ) {
      			while ($my_query->have_posts()){ 
      				$my_query->the_post(); ?> 
      				<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail(array(100, 100)); ?><?php the_title(); ?></a></li> 
      				<?php 
      			}
      		} 
      		wp_reset_query(); 
      	} 
      	?> 
      </ul>

      Остальное по аналогии.

      Ответить4 года назад #
      • Kama4489 @

        В данный момент вывожу первую метку с помощью функции (в functions.php):

        function first_post_tag_link()
        {
        	if ( $posttags = get_the_tags() )
        	{
        		$tag = current( $posttags );
        		printf(
        			'%2$s',
        			get_tag_link( $tag->term_id ),
        			esc_html( $tag->name )
        		 );
        	}
        }

        вызываемой в single.php с помощью (ну вы и так уже знаете)

        <?php first_post_tag_link(); ?>

        .
        Т.е. это пока единственная рабочая альтернатива

        <?php $tags[0]->name ?>

        только я не знаю, как заставить её выводить вторую и третью метки отдельно.

        Ответить4 года назад #
        • Kama4489

          ой ой ой, ошибочка ведь: про echo то забыли...

          <?php echo $tags[0]->name ?>

          Сейчас проверил, все работает!

          Поправил свой вышеприведенный код.

          1
          Ответить4 года назад #
          • Kama4489 @

            Благодарю, Вы помогли мне осуществить задуманное.

            Ответить4 года назад #
  • Елена @

    а как вывести "похожие записи" для attachments? метки сделала, а вот вывод "похожих записей" не получается((

    2

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

Ваш комментарий