WordPress. Заголовок страницы

22.03.2019

Теги: CMSHookWeb-разработкаWordPress

Выводим заголовок страницы

Функция wp_get_document_title() получает заголовок текущей страницы (документа), который принято выводить в теге title. Это замена для устаревшей функции wp_title(). Для главной страницы функция возвращает название сайта + тире + краткое описание. Название и описание функция получает из настроек сайта. Для страницы записи функция возвращает название поста + тире + название сайта.

<title><?= wp_get_document_title(); ?></title>
<title>Сайт на WordPress &#8212; Ещё один сайт на WordPress</title>

Фильтры для манипуляций с заголовком

В WordPress 4.4 добавилось несколько новых фильтров для манипуляции заголовком окна браузера, которые можно использовать внутри темы или плагина.

pre_get_document_title

Фильтр позволяет переопределить работу функции wp_get_document_title():

add_filter(
    'pre_get_document_title',
    function() {
        return 'Какой-то заголовок страницы';
    }
);
<title><?= wp_get_document_title(); ?></title>
<title>Какой-то заголовок страницы</title>

document_title_separator

Фильтр для изменения разделителя между частями заголовка.

add_filter(
    'document_title_separator',
    function() {
        return '|';
    }
);
<title><?= wp_get_document_title(); ?></title>
<title>Сайт на WordPress | Ещё один сайт на WordPress</title>

document_title_parts

Фильтр частей заголовка, из которых состоит title. Представлен в виде ассоциативного массива, элементы которого можно редактировать, удалять или добавлять.

Array
(
    [title] => Сайт на WordPress
    [tagline] => Ещё один сайт на WordPress
)
add_filter(
    'document_title_parts',
    function($parts) {
        if (isset($parts['tagline'])) unset($parts['tagline']);
        return $parts;
    }
);
<title><?= wp_get_document_title(); ?></title>
<title>Сайт на WordPress</title>

Добавляем поддержку title-tag

Если добавить теме поддержку title-tag, то в <head> части документа не нужно указывать тег <title>. Тег будет добавлен автоматически функцией _wp_render_title_tag(), которая привязана к событию wp_head. Это событие вызывается из функции wp_head(). Вызов самой функции wp_head() должен быть в файле header.php темы, внутри тега <head>.

<!doctype html>
<html lang="ru">
<head>
    <meta charset="<?= bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php wp_head(); ?>
</head>
<body>

При автоматическом добавлении тега <title> WordPress будет использовать функцию wp_get_document_title() для вывода заголовка, т.е. будет добавлен код:

<title><?= wp_get_document_title(); ?></title>

В этом можно убедиться, если заглянуть в исходный код функции _wp_render_title_tag():

function _wp_render_title_tag() {
    if ( ! current_theme_supports('title-tag') ) {
        return;
    }
    echo '<title>' . wp_get_document_title() . '</title>' . "\n";
}

Функция current_theme_supports() проверяет, есть ли указанная возможность у темы, зарегистрированная через add_theme_support().

Дополнительно

Поиск: CMS • Hook • Web-разработка • WordPress • Заголовок • Title • wp_get_document_title • title-tag • add_theme_support • current_theme_supports • wp_head

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.