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

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

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