Как обрезать длинное название поста (title) до нужного количества слов или символов на WordPress
Мне однажды потребовалось обрезать заголовки постов до 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 - количество нужных нам слов и "..." - то, что будет стоять в конце обрезанного текста.
Идея этого кода заключается в том, что сперва мы считаем количество слов в заголовке поста и сравниваем с заданным нами количеством слов. Если их больше - обрезаем до нужного количества и вставляем в конце "...", если меньше - оставляем как есть.
Я использую вторую функцию. Можете посмотреть, как она у меня работает в "похожих записях".