Как автоматически сокращать слишком длинное название поста

Иногда бывают такие блоги, в которых названия постов выходят слишком длинными, и, если дизайн не позволяет расставить дополнительные переносы, в итоге они не вмещаются в те размеры, которые отведены — выходят за рамки блога. Согласен, смотрится это ужасно, и ситуацию нужно исправлять.

Ну чтож, исправлять — так исправлять. Для этого нужно создать функцию, которая будет автоматически обрезать название поста, если оно длиннее, чем максимально допустимое количество символов. Для этого откройте файл functions.php и вставьте в него такой код:

function the_title2($before = '', $after = '', $echo = true, $length = false) {
$title = get_the_title();
if ( $length && is_numeric($length) ) {
$title = mb_substr( $title, 0, $length,'UTF-8');
}
if ( strlen($title)> 0 ) {
$title = apply_filters('the_title2', $before . $title . $after, $before, $after);
if ( $echo )
echo $title;
else
return $title;
}
if (!function_exists('mb_substr')) {
function mb_substr($str,$from,$len){
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'. $from .'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'. $len .'}).*#s','$1', $str);
}
}
}

Этот код вводит ограничение на длину заголовка поста — он обрезается до нужной длины. Теперь осталось использовать его. В тех файлах, где это нужно (index.php, single.php, archive.php, search.php) нужно найти участок кода, который отвечает за отображение заголовка поста. Обычно это делается с помощью функции

<?php the_title(); ?>

Вот эту функцию нам и нужно заменить только что созданной:

<?php the_title2('', '...', true, '100') ?>

Обратите внимание: 100 — это максимально допустимое количество символов, и если название будет превышать его, то все, что выходит за рамки, будет заменено на …

Экспериментируйте!

P.S. Возможно, что в представленном коде нужно будет удалить #038;

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Отправить ответ

Оставьте первый комментарий!

wpDiscuz