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

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

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

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

Комментарии

Комментариев пока нет. Почему бы ’Вам не начать обсуждение?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *