Мне однажды потребовалось обрезать заголовки постов до 7 слов в блоке «похожие записи«, который находиться у меня в конца каждой статьи.
Я не хотел использовать всякие там плагины и нагружать сервер, поэтому нашел в интернете функции, при помощи которых можно обрезать заголовок до нужного количества символов и слов.
Функция ограничения заголовка (title) по количеству символов
Вставляем в файл function.php вот этот код:
function title_chars($count, $t) {
$title = get_the_title();
if (mb_strlen($title) > $count)
$title = mb_substr($title,0,$count);
else $t = ''; echo $title . $t;}
$count — количество символов.
$t — текст, который будет стоять в конце обрезанного заголовка. Обычно ставят «…».
get_the_title() — возвращает заголовок записи.
mb_strlen() — получает длину строки.
mb_substr() — получает часть строки.
В шаблоне в нужном месте просто указываете функцию:
<?php title_chars(30, '...'); ?>
Где 30 — количество нужных нам символов и «…» — то, что будет стоять в конце обрезанного текста.
Идея кода проста: если количество символов заголовка поста больше указанного нами количества символов, то обрезаем и в конце ставим «…», иначе — оставляем как есть.
Функция ограничения заголовка (title) по количеству слов
Вставляем в файл function.php вот этот код:
function title_words($count, $t) {
$title = get_the_title();
$words = split(' ', $title);
if (count($words) > $count) {
array_splice($words, $count);
$title = implode(' ', $words);
}
else $t = '';
echo $title . $t;}
$count — количество слов.
$t — текст, который будет стоять в конце обрезанного заголовка. Обычно ставят «…».
get_the_title() — возвращает заголовок записи.
split() — делает из строки массив с помощью регулярного выражения.
$words — массив, состоящий из слов заголовка поста.
count() — считает количество элементов массива.
array_splice() — удаляет последовательность элементов массива и заменяет её другой последовательностью.
implode() — объединяет элементы массива в строку.
Дальше просто вставляем в код шаблона функцию:
<?php title_words(30, '...'); ?>
Где 30 — количество нужных нам слов и «…» — то, что будет стоять в конце обрезанного текста.
Идея этого кода заключается в том, что сперва мы считаем количество слов в заголовке поста и сравниваем с заданным нами количеством слов. Если их больше — обрезаем до нужного количества и вставляем в конце «…», если меньше — оставляем как есть.
Я использую вторую функцию. Можете посмотреть, как она у меня работает в «похожих записях».

