WordPress по умолчанию практически не ограничивает длину заголовка H1 записи или страницы.* С одной стороны — это позволяет владельцу ресурса настроить систему на свое усмотрение, но с другой — может вызвать сразу несколько проблем.
Как задать свои собственные ограничения на количество слов или символов в заголовке — разберемся сегодня.
Недостатки нелимитированного заголовка
У неограниченного по длине заголовка в WordPress есть свои минусы:
Длинное название статьи может плохо восприниматься пользователями, так как рассеивает внимание.
Поисковые системы не рекомендуют делать длинные заголовки. В сниппете поисковой выдачи они просто обрежутся, тем самым снизив CTR. Поэтому Google и Яндекс рекомендуют ограничивать длину H1 записей и страниц сайта 60-70 символами.
Ключевые слова, помещенные в заголовок, играют большую роль в ранжировании и корректном определении поисковым роботом основного интента страницы. Получается, что лишние слова и словосочетания в H1 делают ненужную и даже вредную разбавку релевантных ключей.
Ещё один существенный недостаток: в некоторых темах WordPress при использовании длинных заголовков начинает «плыть» верстка в карточках постов на главной странице, в рубриках, блоках похожих статей, виджетов свежих публикаций и т. д.
Поэтому, если на вашем сайте для редактирования и публикации статей задействовано несколько контент-менеджеров, имеет смысл заранее установить лимит на длину заголовков, который будет отрабатывать уже на стадии сохранения и публикации нового поста.
Так вы добьетесь, чтобы при создании свежей записи и указании в ее названии больше определенного числа символов ваш контент-менеджер видел соответствующее сообщение и происходила блокировка публикации до внесения нужных изменений.
Как ограничить число символов в заголовках поста с помощью плагина
К сожалению, стандартных инструментов для установки подобного ограничения в WordPress нет.
Но есть стороннее решение — плагин Limit Post Titles. Несмотря на то что плагин не обновлялся более 7 лет, свои функции он выполняет четко, но только в классическом редакторе.
В блочном редакторе Gutenberg заданные ограничения не сработают, и запись можно будет легко опубликовать даже с очень длинным H1.
После установки и активации плагина перейдите в админ-панели в Настройки -> Limit Post Titles.
На странице настроек нужно будет указать всего 2 параметра.
- Character Limit — верхний предел на количество символов в заголовке;
- Post Types — выбор типа записей из числа доступных на вашем сайте, для которых будет применяться это ограничение.
В большинстве случаев достаточно отметить значение post (запись) и/или page (страница).
Чтобы настройки вступили в силу, не забудьте нажать кнопку «Сохранить изменения».
Теперь перейдите в админке в Записи -> Добавить новую, где в заголовке введите больше 60 символов.
В поле для ввода заголовка появится счетчик символов, а кнопка «Опубликовать» станет неактивной.
При попытке сохранить запись с чересчур длинным заголовком появится всплывающее окно с соответствующим сообщением.
В итоге черновик сохранится, но опубликовать его вы не сможете.
Ограничиваем длину заголовка записей с помощью php хука
О том, что такое хуки, мы уже рассказывали. Можете почитать ту статью.
Представленные самописные хуки работают как при публикации новой записи, так и при сохранении изменений после редактирования уже опубликованной. Но только в Classic Editor. Гутенберг им неподвластен.
До заданного количества символов
function limit_post_title(){
if (mb_strlen($_POST['post_title']) > 60 )
wp_die( 'Вы превысили разрешенную длину заголовка' );
}
add_action('publish_post', 'limit_post_title');
Текст сообщения и лимиты по длине заголовка можете задать свои.
При использовании хука кнопка «Опубликовать» остается активной, но после нажатия на нее ограничение на количество слов срабатывает и выводится пустое окно с соответствующим сообщением.
До определенного числа слов
Способ ограничения заголовка записей по словам не самый лучший, так как он не всегда способен решить проблему с «поплывшим» дизайном вашего шаблона, ведь слова могут содержать разное количество букв. Но возможно кому-то нужен именно он.
function limit_word_title(){
$post_title = explode(" ", $_POST['post_title']);
if ( count($post_title) > 10 ) wp_die( 'Вы превысили допустимую длину заголовка.');
}
add_action('publish_post', 'limit_word_title', 0);
Результат работы данного хука аналогичен предыдущему — с появлением сообщения о превышении допустимой длины заголовка в отдельном пустом окне.
В любую из этих двух функций можете добавить свои условия для задания ограничений на длину заголовка отдельных страниц, записей (по ID) и других доступных таксономий.
* По умолчанию допустимая длина заголовка все-таки лимитирована типом данных TEXT в базе MySQL и составляет приблизительно 65 тысяч символов для текстов на латинице.