Filter document_title_parts
document_title_parts — это низкоуровневый фильтр WordPress, который управляет частями заголовка <title>, до того как они будут склеены в одну строку.
Разберём подробно.
🧠 Как WordPress формирует <title>
Современный WordPress (4.4+) делает так:
-
Собирает массив частей заголовка
-
Пропускает его через фильтр
document_title_parts -
Склеивает части через разделитель
-
Пропускает итог через
pre_get_document_title -
Выводит
<title>
Схема:
document_title_parts → pre_get_document_title → <title>
🔎 Что такое document_title_parts
Это фильтр, который возвращает массив:
array(
'title' => 'Заголовок страницы',
'page' => 'Page 2',
'tagline' => 'Описание сайта',
'site' => 'Название сайта',
);
WordPress сам решает, какие части включать.
📌 Пример стандартного массива
Для поста:
array(
'title' => 'Название поста',
'site' => 'Название сайта',
);
Для главной:
array(
'site' => 'Название сайта',
'tagline' => 'Описание сайта',
);
✅ Как использовать document_title_parts
Пример: заменить только title
add_filter('document_title_parts', function ($parts) {
if (is_singular()) {
$seo_title = get_field('seo_title');
if ($seo_title) {
$parts['title'] = $seo_title;
}
}
return $parts;
});
✔ меняется только заголовок
✔ имя сайта остаётся
✔ слоган остаётся (если включён)
🔥 Пример: убрать название сайта
add_filter('document_title_parts', function ($parts) {
unset($parts['site']);
return $parts;
});
Результат:
<title>Заголовок страницы</title>
🔥 Пример: кастомный порядок
add_filter('document_title_parts', function ($parts) {
return array(
'title' => $parts['title'],
'site' => $parts['site'],
);
});
🆚 document_title_parts vs pre_get_document_title
| Фильтр | Что меняет | Когда использовать |
|---|---|---|
document_title_parts |
части title | тонкая настройка |
pre_get_document_title |
весь title строкой | полный контроль |
👉 SEO-плагины используют оба.
⚠ Важно помнить
-
document_title_partsне выводит<title> -
он НЕ строка, а массив
-
pre_get_document_titleсрабатывает позже
✅ Рекомендация для SEO
Для кастомного SEO:
-
использовать
document_title_parts→ управлять логикой -
использовать
pre_get_document_title→ крайний приоритет
🎯 Итог
✔ document_title_parts — управляет частями <title>
✔ Работает до склейки
✔ Позволяет убрать site/tagline/page
✔ Идеален для SEO без дублирования
No comments to display
No comments to display