На веб-странице одиночной записи блога на 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="http://blogandweb.com/wordpress/como-excluir-etiquetas-de-la-lista-de-tags-en-wordpress/" text="Источник"]
Пожалуйста, подскажите, как можно исключить ссылку на метку на странице архива конкретной метки?
Если новость имеет метки Кино и Актер и эта новость отображается на странице архива метки Кино, то отображать только ссылку на метку Актер. То есть исключить отображение ссылки на метку текущего архива.