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

На веб-странице одиночной записи блога на 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'); ?>
Источник
Опубликовано в рубрике Создание и изменение темы | с метками . |

Еще записи

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

  1. Rigo говорит:

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

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

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