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

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

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

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

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

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. google.com/accounts/o8…

    А как сделать тоже самое но для постов! без плагинов!?

    Ответить
    1. А что в постах сокращать то нужно? Не совсем понятен вопрос.

      Ответить
      1. google.com/accounts/o8…

        Количество символов в превью коненчо же! То есть сам текст! Допустим пост на 300 символов мне нужно чтоб в превью только 100 отобразилось!)

        Ответить
        1. https://n-wp.ru/kak-sdelat-chtoby-teg-more-vstavlyalsya-avtomaticheski-auto-more/ — Как сделать, чтобы тег more вставлялся автоматически | Auto More
          Либо пользуйтесь плагином The_excerpt Reloaded: https://n-wp.ru/plagin-dlya-gibkogo-upravleniya-anonsami-the_excerpt-reloaded/
          На худой конец есть функция the_content_rss: http://codex.wordpress.org/Function_Reference/the_content_rss

          Ответить
  2. Sergey Biryukov

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

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

    if ( $length && is_numeric($length) ) {
    
    Ответить
  3. google.com/accounts/o8…

    Кстати да )))

    А если вернуться к моему вопросу? Вариант или нет?))))

    Ответить
  4. Михаил

    Доброго времени суток. Обратил внимание, что в большинстве постов не видно кода функций, пустые таблички. Как их увидеть?
    Спасибо за ресурс, очень много полезного почерпнул для себя.

    Ответить