Обрезать название поста WordPress до заданного количества символов или слов

Иногда, в связи с теми или иными особенностями дизайна WordPress-сайта бывает необходимо обрезать название поста до определенной заданной длины. Я покажу 2 варианта решения: когда нужно укоротить заголовок по количеству символов и по количеству слов.

Ограничение заголовка по количеству символов

Сначала в файл functions.php вашего шаблона вставьте следующую функцию:

function trim_title_chars($count, $after) {
	$title = get_the_title();
	if (mb_strlen($title) > $count) $title = mb_substr($title,0,$count);
	else $after = '';
	echo $title . $after;
}

Затем в шаблоне поменяйте код, который выводит название поста — <?php the_title(); ?> — на такой:

<?php trim_title_chars(30, '...'); ?>

Здесь цифра 30 — это количество символов, до которых нужно обрезать заголовок, а ... — то, что будет стоять после обрезанного текста. Можно вставить туда, например, какой-нибудь другой символ, либо вообще картинку.

Ограничение заголовка по количеству слов

В этом случае все по аналогии, только немного отличается функция.

Следующий код также нужно вставить в файл functions.php:

function trim_title_words($count, $after) {
	$title = get_the_title();
	$words = split(' ', $title);
	if (count($words) > $count) {
		array_splice($words, $count);
		$title = implode(' ', $words);
	}
	else $after = '';
	echo $title . $after;
}

После этого код заголовка поста — <?php the_title(); ?> — поменять на такой:

<?php trim_title_words(3, '...'); ?>

Здесь цифра 3 — это количество слов, до которых нужно обрезать заголовок, а ... — то, что будет стоять после обрезанного текста.

Комментарии (4)
  1. 1
    Дмитрий

    Здравствуйте. Сделал ограничение заголовка по количеству символов. Код заработал, когда я убрал в mb_strlen mb_, т. е. оставил только strlen. Все заработало, но есть одна неприятность — даже когда заголовок равен или меньше указанного количества символов, все равно в конце появляется троеточие, за исключением совсем коротких заголовков. Не подскажите — почему так и можно ли это исправить?

  2. 3

    Респект за полезный материал!

  3. 4
    Олег

    А как обрезать заголовок не с конца, а с начала