Как ограничить количество меток, выводимых в посте стандартным способом

Как ограничить количество меток, выводимых в посте стандартным способом | n-wp.ru
Два способа ограничить количество выводимых меток в посте - глобальный и локальный.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Иногда требуется ограничить количество меток, которые выводятся в записи. Это может быть продиктовано дизайном используемой темы (слишком много меток не помещаются в отведенное для них пространство), либо может быть мерой продосторожности, защитой от дурака, например, в блогах, где посты могут без модерации публиковать пользователи, которые не склонны думать за вебмастера, И ставят столько меток, сколько душе угодно.

Конечно, простейшим решением было бы вообще запрет на использование меток, но зачем отказываться от такого удобного способа перелинковки и фильтрации постов по схожей тематике? Достаточно просто ограничить количество меток, выводимых в посте, до нужного вам количества.

Способ первый — глобальный

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

add_filter('term_links-post_tag','limit_tags');
function limit_tags($terms) {
return array_slice($terms,0,10,true);
}

Этот код ограничивает количество выводимых меток десятью. Вы можете изменить это количество на то, которое вам нужно.

Способ второй — локальный

Так же можно использовать код, который для ограничения количества выводимых меток будет использовать стандартную функцию get_the_tags(), непосредственно в файле шаблона (например, в single.php, index.php). Для этого добавьте в файл шаблона:

<?php
$posttags = get_the_tags();
$count=0; $sep='';
if ($posttags) {
	echo 'Теги: ';
	foreach($posttags as $tag) {
		$count++;
		echo $sep . '<a target="_blank" rel="nofollow" href="">term_id).'">'.$tag->name.'</a>';
$sep = ', ';
		if( $count > 4 ) break;
	}
}
?>

За количество выводимых меток отвечает строчка

		if( $count > 4 ) break;

Так как в программировании отсчет начинается с цифры 0, то 4 говорит о том, что будет выводиться 5 меток. В этом коде так же задается разделитель между метками:

$sep = ', ';

Сейчас это запятая с пробелом после нее, но вы можете изменить разделитель на другой, например, поставить слэш:

$sep = '/ ';

Заключение

Оба способа являются равнозначными, просто первый задает количество меток, которое действует глобально, ограничивая их везде, где используется функция the_tags(). Второй способ является индивидуальным — с его помощью вы можете задавать разное количество меток, выводимых в разных местах. Например, вы можете в шаблоне index.php выводить пять меток, а в single.php десять.

Стоит заметить, что эти два способа органичения количества меток влияют только на вывод. При редактировании и сохранении поста в базу данных все равно будут попадать все метки, которые вы укажете. Если вы решите отказаться от ограничения количества меток, то просто удалите используемый код, и вы увидите все метки, которыми помечен пост.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. drey

    Первый способ получился, но я хочу чтобы на главной в анонсах было ограниченное количество меток, а в полной записи уже были видны все метки.

    Однако, при добавлении кода из второго способа, пишет ошибку: Parse error: syntax error, unexpected ‘”‘, expecting ‘,’ or ‘;’ в строчке
    echo $sep . ‘term_id).'”>’.$tag->name.’‘;

    Подскажите, как быть?

    Ответить
    1. Valen

      В выражении echo $sep . ‘term_id).'”>’.$tag->name.’‘; пропущена кавычка после term_id)

      Ответить