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

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

Ну чтож, исправлять – так исправлять. Для этого нужно создать функцию, которая будет автоматически обрезать название поста, если оно длиннее, чем максимально допустимое количество символов. Для этого откройте файл 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) нужно найти участок кода, который отвечает за отображение заголовка поста. Обычно это делается с помощью функции


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


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

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

7 Комментарии

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

    Совершенно точно нужно удалить :) Исходная строка была такой:

    if ( $length && is_numeric($length) ) {
    
  2. Доброго времени суток. Обратил внимание, что в большинстве постов не видно кода функций, пустые таблички. Как их увидеть?
    Спасибо за ресурс, очень много полезного почерпнул для себя.

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

Ваш электронный адрес не будет опубликован.


*