WordPress добавляет в title тэг код и мусор. Решение проблемы.

Вопрос:
Есть сайт на Вордпресс. В тег Title попадает это <title><span class="page-title-label">Рубрика:</span> <span class="page-title-value"><span>Полезности</span></span></title>. То есть там где надо выводится рубрика с названием точно так же <span class="page-title-label">Рубрика:</span> <span class="page-title-value"><span>Рубрика</span></span>. Почему это дублируется в тайтле страницы категории?
Решение:
add_filter('document_title_parts', function($title) {
if (is_category()) {
// Удаляем HTML-теги из заголовка
$title['title'] = strip_tags($title['title']);
// Удаляем "Рубрика:" и лишние пробелы
$title['title'] = str_replace('Рубрика:', '', $title['title']);
$title['title'] = trim($title['title']);
}
return $title;
}, 10, 1);
Вопрос:
Mо;но ли написать простой костыль ?
Решение:
add_filter('document_title_parts', function($title) {
if (is_category()) {
// Удаляем HTML-теги из заголовка
$title['title'] = strip_tags($title['title']);
// Удаляем "Рубрика:" и лишние пробелы
$title['title'] = str_replace('Рубрика:', '', $title['title']);
$title['title'] = trim($title['title']);
}
return $title;
}, 10, 1);
Вопрос:
«Этот код должен быть в ставлен страницу вывода категорий?
Ответ:
Этот код не нужно вставлять непосредственно в страницу вывода категорий (например, в category.php или archive.php). Он предназначен для работы на уровне всей темы WordPress и должен быть добавлен в файл functions.php вашей дочерней темы. Это фильтр, который модифицирует тег <title> для всех страниц категорий. Вот пошаговое руководство:
Как применить код:
- Создайте дочернюю тему (если еще не создана)
- Дочерняя тема нужна, чтобы изменения не потерялись при обновлении основной темы.
- Создайте папку, например,
my-theme-childвwp-content/themes/. - В ней создайте файл
style.cssс таким содержимым:/* Theme Name: My Theme Child Template: my-theme */(Замените
my-themeна название папки вашей основной темы.) - Создайте файл
functions.phpв той же папке.
- Добавьте код в
functions.php- Откройте файл
functions.phpдочерней темы (например,wp-content/themes/my-theme-child/functions.php). - Вставьте следующий код:
<?php add_filter('document_title_parts', function($title) { if (is_category()) { // Удаляем HTML-теги из заголовка $title['title'] = strip_tags($title['title']); // Удаляем "Рубрика:" и лишние пробелы $title['title'] = str_replace('Рубрика:', '', $title['title']); $title['title'] = trim($title['title']); } return $title; }, 10, 1); ?> - Сохраните файл.
- Откройте файл
- Активируйте дочернюю тему
- Зайдите в админ-панель WordPress: Внешний вид → Темы.
- Активируйте вашу дочернюю тему (например, «My Theme Child»).
- Проверьте результат
- Откройте любую страницу категории на сайте.
- Нажмите правой кнопкой мыши → Просмотреть код страницы.
- Найдите тег
<title>— он должен выглядеть, например, как<title>Полезности - Название сайта</title>, без<span>и «Рубрика:».
Почему не в шаблон категории?
- Фильтр
document_title_partsработает глобально и изменяет тег<title>для всех страниц категорий, независимо от шаблона (category.php,archive.phpи т.д.). - Если вставить этот код напрямую в
category.php, он не сработает корректно, так как тег<title>формируется вheader.phpили через ядро WordPress, а не в шаблоне категории.
Возможные причины:
- Если у вас есть плагин кэширования (например, WP Super Cache), очистите кэш после добавления кода.
- Если проблема не решилась, проверьте, не добавляет ли ваша тема или плагин SEO (Yoast, Rank Math) лишний текст в
<title>. Можете временно отключить SEO-плагин для теста.
Этот «костыль» прост и эффективен, он уберет <span> и «Рубрика:» из тега <title> на всех страницах категорий.