Фильтр wp_title в WordPress: Настройка заголовков страниц

Фильтр wp_title использовался в WordPress до версии 4.4 для изменения заголовков страниц в HTML-документе. Он позволял разработчикам изменять содержимое тега <title>, который отображается в браузере на вкладке. Однако начиная с WordPress 4.4, этот фильтр был заменён на более современный способ через функцию wp_title() и тему, поддерживающую функцию add_theme_support( 'title-tag' ).

Несмотря на это, фильтр wp_title по-прежнему может использоваться в старых темах, которые не поддерживают новый подход. Давайте разберём, как работает фильтр, его примеры и как его можно адаптировать под современные версии WordPress.

Использование фильтра wp_title

Фильтр wp_title позволяет вам контролировать содержимое тега <title> в заголовке HTML-документа, изменяя стандартный вывод.

Пример базового использования:

add_filter( 'wp_title', 'custom_wp_title', 10, 2 );

/**
 * Кастомизация заголовка страницы.
 *
 * @param string $title  Текущий заголовок.
 * @param string $sep    Разделитель заголовка.
 * @return string        Изменённый заголовок.
 */
function custom_wp_title( $title, $sep ) {
    // Изменяем заголовок только на главной странице
    if ( is_home() || is_front_page() ) {
        $title = 'Добро пожаловать на мой сайт ' . $sep . ' ' . get_bloginfo( 'name' );
    }

    return $title;
}

Параметры функции:

  • $title — текущий заголовок страницы.
  • $sep — разделитель, который используется между частями заголовка (по умолчанию это символ «|»).

Как это работает?

  • В этом примере мы проверяем, находимся ли мы на главной странице или странице блога с помощью функций is_home() и is_front_page().
  • Если условие выполняется, мы изменяем заголовок страницы, добавляя текст «Добро пожаловать на мой сайт».
  • Для всех остальных страниц заголовок остаётся без изменений.

Использование wp_title для других страниц

С помощью фильтра wp_title можно кастомизировать заголовки и для других типов страниц: архива, страницы записи, категории и т.д.

Пример для страниц архивов:

add_filter( 'wp_title', 'custom_archive_title', 10, 2 );

function custom_archive_title( $title, $sep ) {
    if ( is_category() ) {
        $title = 'Категория: ' . single_cat_title( '', false ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
    } elseif ( is_tag() ) {
        $title = 'Метка: ' . single_tag_title( '', false ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
    } elseif ( is_author() ) {
        $title = 'Автор: ' . get_the_author() . ' ' . $sep . ' ' . get_bloginfo( 'name' );
    }

    return $title;
}

В этом примере фильтр изменяет заголовок в зависимости от типа архивной страницы: категории, метки или автора.

Обновленный подход: add_theme_support( 'title-tag' )

Начиная с WordPress 4.1, была введена поддержка функции add_theme_support( 'title-tag' ), которая автоматически генерирует заголовок страницы, и использование фильтра wp_title стало устаревшим.

Чтобы включить эту функцию, просто добавьте следующий код в файл вашей темы functions.php:

add_theme_support( ‘title-tag’ );

Теперь WordPress самостоятельно будет генерировать заголовки для каждой страницы.

Фильтр pre_get_document_title

Вместо старого фильтра wp_title, начиная с WordPress 4.4, вы можете использовать новый фильтр pre_get_document_title для изменения заголовков страниц:

add_filter( 'pre_get_document_title', 'custom_document_title' );

function custom_document_title( $title ) {
    if ( is_home() || is_front_page() ) {
        $title = 'Добро пожаловать на мой сайт';
    }

    return $title;
}

тот фильтр позволяет более гибко управлять заголовками, особенно в темах, поддерживающих title-tag.

Почитаем еще?: