Обрезать название поста 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
– это количество слов, до которых нужно обрезать заголовок, а ...
– то, что будет стоять после обрезанного текста.
Комментарии (10)
Здравствуйте. Сделал ограничение заголовка по количеству символов. Код заработал, когда я убрал в mb_strlen mb_, т. е. оставил только strlen. Все заработало, но есть одна неприятность – даже когда заголовок равен или меньше указанного количества символов, все равно в конце появляется троеточие, за исключением совсем коротких заголовков. Не подскажите – почему так и можно ли это исправить?
Не знаю, в чем причина, у себя такого не наблюдаю – многоточие добавляется только к обрезанным заголовкам.
даже если и меньше, будет ставится символ однозначно, в функции это прописано в конце.. хотя надо было бы включить это в условный оператор.. замечание автору
Респект за полезный материал!
А как обрезать заголовок не с конца, а с начала
Лучше всего оптимизировать заголовок, но так, чтобы смысл не терялся, чем его обрезать.
А как бы ту же фишку применить к Предыдущим и Следующим записям, через , например?
Добрый день. Спасибо за материал. А как этот отрывок заголовка сделать ссылкой и с тегом H2
Если заголовок выводится такой конструкцией
При смене the_title , заголовок обрезается но выводится простым текстом.
А можно как-то обрезать с начала поста заголовок? У меня все посты начинаются с одного названия и чтобы не спамить заголовком в странице катагорий, функция былабы круто встроена.
Вот так:
Где SOME_TEXT – то, что нужно вырезать.