24
Сен

Как обрезать длинное название поста (title) до нужного количества слов или символов на WordPress

Категория: Про Сайты
Теги: ,

Мне однажды потребовалось обрезать заголовки постов до 7 слов в блоке "похожие записи", который находиться у меня в конца каждой статьи.

Как обрезать длинное название поста (title) до нужного количества слов или символов на WordPress

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

Функция ограничения заголовка (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 - количество нужных нам слов и "..." - то, что будет стоять в конце обрезанного текста.

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

Я использую вторую функцию. Можете посмотреть, как она у меня работает в "похожих записях".

Мой паблик в Вконтакте :)

Комментарии к записи Как обрезать длинное название поста (...