В WordPress заголовок страницы (title) играет ключевую роль для SEO и удобства пользователей. Иногда возникает задача не просто изменить отображаемый заголовок в шаблоне, а именно отредактировать или полностью удалить заголовок страницы программно, чтобы обеспечить гибкость дизайна или реализовать уникальные пользовательские сценарии.
Почему стоит использовать фильтры для изменения заголовка страницы в WordPress
Можно просто убрать вывод заголовка в файлах темы — например, удалить <?php the_title(); ?> из шаблона. Но этот подход не универсален и не гибок, особенно если тема часто обновляется или используется несколько шаблонов.
Фильтры WordPress — более правильный способ вмешательства в вывод заголовка. Они позволяют изменить заголовок на уровне ядра или темы, не затрагивая файлы напрямую и сохраняя совместимость с обновлениями.
Для изменения заголовка страницы обычно используют фильтр the_title, который отвечает за вывод заголовков постов, страниц и других типов записей.
Как удалить заголовок страницы через фильтр the_title
Если необходимо полностью скрыть заголовок страниц определенного типа, можно использовать фильтр the_title и вернуть пустую строку для нужных условий.
function wpmark_filter_remove_page_title($title, $id = null) {
if (is_admin()) {
return $title; // не трогаем в админке
}
if (is_page() && get_the_ID() === $id) {
return ''; // удаляем заголовок конкретной страницы
}
return $title;
}
add_filter('the_title', 'wpmark_filter_remove_page_title', 10, 2);
В этом примере функция проверяет, что вывод происходит на фронтенде и что текущая страница совпадает с нужной по ID. Если условие истинно — заголовок заменяется на пустую строку. Можно также расширить условие для нескольких страниц или типов записей.
Изменение заголовка страницы через фильтр с динамическими данными
Часто требуется не просто убрать заголовок, а заменить его на другой текст, например, добавить префикс, суффикс или полностью кастомный заголовок.
function wpmark_filter_change_page_title($title, $id = null) {
if (is_admin()) {
return $title;
}
if (is_page() && get_the_ID() === $id) {
$custom_title = 'WPMark: ' . $title . ' – уникальный заголовок';
return $custom_title;
}
return $title;
}
add_filter('the_title', 'wpmark_filter_change_page_title', 10, 2);
Такой подход позволяет динамически менять заголовок без правок в шаблонах и без создания дочерней темы. Код можно разместить в functions.php вашей темы или в специальном плагине.
Особенности работы с SEO-плагинами и заголовками
Если на сайте установлен SEO-плагин, например, Clearfy Pro, то он может управлять заголовками страниц через собственные механизмы. В таких случаях фильтр the_title может не влиять на итоговый тег <title> в <head> страницы.
Чтобы влиять на SEO-заголовки, нужно применять фильтры, которые используют SEO-плагины или фильтры ядра WordPress для заголовка <title>:
function wpmark_filter_wp_title($title) {
if (is_page()) {
return 'WPMark | ' . $title;
}
return $title;
}
add_filter('wp_title', 'wpmark_filter_wp_title');
Или использовать фильтр pre_get_document_title (начиная с WP 4.4):
function wpmark_filter_document_title($title) {
if (is_page()) {
return 'WPMark | ' . $title;
}
return $title;
}
add_filter('pre_get_document_title', 'wpmark_filter_document_title');
Эти методы меняют именно тег <title> в <head>, а не заголовок внутри контента.
Практические советы и распространенные ошибки
- Не меняйте заголовки в админке. Всегда проверяйте условие
is_admin(), чтобы не ухудшить отображение в административной панели. - Учитывайте кэширование. Если на сайте настроено кэширование, изменения заголовков могут не сразу отображаться. Очистите кэш после внесения изменений.
- Используйте дочерние темы. Если планируете править шаблоны, создайте дочернюю тему, чтобы не потерять изменения при обновлении.
- Проверяйте ID страницы или slug. Для надежной работы фильтров используйте уникальные идентификаторы или слаг страницы.
- Тестируйте на разных типах страниц. Убедитесь, что изменения не влияют на другие страницы или записи.
Пример комплексного решения: удаление заголовка для статической главной и изменение для других страниц
function wpmark_filter_custom_titles($title, $id = null) {
if (is_admin()) {
return $title;
}
if (is_front_page()) {
return ''; // убираем заголовок на главной
}
if (is_page()) {
return 'WPMark - ' . $title; // добавляем префикс для остальных страниц
}
return $title;
}
add_filter('the_title', 'wpmark_filter_custom_titles', 10, 2);
Этот код показывает, как с минимальными усилиями можно гибко управлять заголовками в WordPress без вмешательства в тему.
Заключение
Использование фильтров WordPress для удаления или изменения заголовка страницы — мощный и гибкий инструмент, который поможет решить специфические задачи отображения заголовков. Продуманное применение фильтра the_title и фильтров для <title> в <head> позволяет сохранить совместимость с темами, SEO-плагинами и обеспечить удобное управление выводом заголовков.
Для расширения возможностей рекомендую ознакомиться с плагином Clearfy Pro, который помогает оптимизировать и управлять различными аспектами сайта, включая заголовки и SEO настройки.