Как исключить метки при выводе ссылок на метки записи

На веб-странице одиночной записи блога на WordPress обычно выводятся метки этой записи. В некоторых случаях возникает необходимость исключить метки, используемые в служебных целях, например, как в первом примере в статье Как связать постоянные страницы с записями блога. Рассмотрим несколько способов исключения меток.


Функция the_tags выводит ссылки на метки записи, а функция get_the_tags возвращает объекты меток записи (См. Функции для работы с метками) .

Явное задание меток

Если для вывода меток используется функция get_the_tags, добавляем в файл functions.php (или в файл плагина) следующий код. Функция фильтрации exclude_tags, возвращающая массив со всеми метками записи кроме заданных меток, добавляется как фильтр для функции get_the_tags:

<?php
function exclude_tags($tags) {
  foreach ($tags as $tag)
    switch ($tag->name) {
    // явное указание меток, которые нужно исключить:
       case 'tag-to-exclude1':
       case 'tag-to-exclude2':
       break;
       default:
     // остальные метки добавляются в массив
       $newtags[] = $tag;
  }
  return $newtags;
}
add_filter( 'get_the_tags', 'exclude_tags');
?>

О функции add_filter см. в статье "Фильтры"

Исключение меток с заданными именами

Эту функцию нужно использовать вместо the_tags. Искомые имена задаются как список в $exclude:

<?php
function pk_the_tags( $before = '', $sep = ', ', $after = '', $exclude = '' ) {
 $tags = get_the_tags();
 if ( empty( $tags ) )
    return false; $tag_list = $before;
 foreach ( $tags as $tag ) {
   if (!empty($exclude))
	$pos = stripos( $exclude, $tag->name);
   else
	$pos = false;
	if ($pos=== false)
	  $tag_links[] = '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a>';
 }
 if (empty($tag_links))
	return false;
 $tag_links = join( $sep, $tag_links );
 $tag_links = apply_filters( 'the_tags', $tag_links );
 tag_list .= $tag_links;
 $tag_list .= $after;
 echo $tag_list;
}
?>

Например, исключение тегов WordPress и Blogger:

<?php if (get_the_tags()) pk_the_tags('', ', ', '', 'Wordpress, Blogger'); ?>

[ref url="//blogandweb.com/wordpress/como-excluir-etiquetas-de-la-lista-de-tags-en-wordpress/" text="Источник"]

Как исключить метки при выводе ссылок на метки записи: 1 комментарий

  1. Rigo

    Пожалуйста, подскажите, как можно исключить ссылку на метку на странице архива конкретной метки?
    Если новость имеет метки Кино и Актер и эта новость отображается на странице архива метки Кино, то отображать только ссылку на метку Актер. То есть исключить отображение ссылки на метку текущего архива.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Еще записи