Как найти и убрать дублирующиеся meta description в WordPress

Дублирующиеся meta description в WordPress обычно появляются не из-за одной ошибки, а из-за наложения нескольких источников: SEO-плагин, тема, кастомный код и шаблоны архивов. В итоге поисковик видит одинаковые или почти одинаковые описания на разных страницах, а в коде страницы можно найти сразу два тега <meta name="description"> или один тег, который подставляется не там, где нужно.

Ниже разберём рабочий сценарий: как быстро понять, откуда берётся дубль, как убрать его без поломки шаблонов и как проверить, что исправление действительно сработало.

Когда проблема действительно в дубле meta description

Сначала стоит убедиться, что речь именно о дублировании, а не о том, что поисковик сам переписывает сниппет. В WordPress это разные ситуации. Если в исходном коде страницы есть два одинаковых или конфликтующих description, проблема на стороне сайта. Если в коде тег один, но в выдаче текст отличается, это уже нормальное поведение поисковой системы.

Как быстро проверить исходный код

Откройте страницу в браузере и посмотрите исходник через view-source: или инструменты разработчика. Ищите строку meta name="description". Если тег встречается дважды, проверьте, кто его выводит: SEO-плагин, тема или кастомный хук.

Полезно сравнить несколько типов страниц:

  • главная;
  • запись;
  • страница рубрики;
  • страница поиска;
  • архив автора.

Если дубль есть только на одном типе шаблона, искать нужно в конкретном шаблоне или условии вывода, а не по всему сайту.

Диагностика: откуда WordPress берёт description

На практике источников обычно три. Первый — SEO-плагин, который выводит description автоматически. Второй — тема, где разработчик добавил свой <meta name="description"> в header.php или через wp_head. Третий — кастомный код в functions.php или плагине сайта.

Если у вас установлен SEO-плагин, сначала проверьте его настройки для конкретного типа контента. Частая ошибка — включён автогенератор description в плагине и одновременно вручную прописан тег в теме.

Поиск по теме и плагинам

Самый надёжный способ — поискать по проекту строку description рядом с meta. Если есть доступ к файлам, выполните поиск по теме и mu-plugins:

grep -Rni 'meta name="description"\|wp_head\|description' wp-content/themes/ wp-content/mu-plugins/

Если доступа к консоли нет, используйте поиск по файлам в IDE или файловом менеджере хостинга. Ищите не только сам тег, но и функции вроде add_action('wp_head', ...).

Как убрать дублирование без лишних рисков

Сначала определите, какой источник должен остаться единственным. Обычно логика такая: SEO-плагин отвечает за meta description, тема не выводит этот тег вообще. Это проще поддерживать и легче проверять.

Вариант 1. Удалить description из темы

Если тег добавлен в header.php вручную, его лучше убрать оттуда. Это самый чистый вариант, потому что тема не должна дублировать SEO-логику, если её уже ведёт плагин.

<!-- было в header.php -->
<meta name="description" content="<?php echo esc_attr( get_bloginfo( 'description' ) ); ?>" />

Если это ваш код, удалите его полностью. Если править родительскую тему нельзя, перенесите изменения в дочернюю тему и переопределите шаблон там.

Вариант 2. Отключить автогенерацию в SEO-плагине для нужных типов страниц

Иногда нужно оставить description только на части страниц. Например, для записей description задаёт редактор, а для архивов его формирует шаблон. В этом случае отключайте автогенерацию точечно в настройках SEO-плагина, а не глобально.

Точные названия пунктов зависят от плагина, поэтому ориентируйтесь на логику: для конкретного post type или taxonomy должен быть выбран один источник description, а не два.

Вариант 3. Убрать лишний вывод через хук

Если description выводится через кастомный хук темы, его можно снять, если вы знаете имя функции. Пример ниже показывает типовой подход: сначала функция подключается к wp_head, потом её можно удалить.

function mytheme_output_meta_description() {
    if ( is_singular() ) {
        $description = get_the_excerpt();
        if ( $description ) {
            echo '<meta name="description" content="' . esc_attr( wp_strip_all_tags( $description ) ) . '" />' . "\n";
        }
    }
}
add_action( 'wp_head', 'mytheme_output_meta_description', 5 );

// Если позже нужно отключить этот вывод:
remove_action( 'wp_head', 'mytheme_output_meta_description', 5 );

Важно: remove_action() сработает только если имя функции и приоритет совпадают с тем, что было добавлено. Если приоритет другой, удаление не произойдёт.

Пошаговая схема исправления

  1. Откройте проблемную страницу и найдите все meta name="description" в исходном коде.
  2. Определите источник каждого тега: тема, SEO-плагин, кастомный код.
  3. Оставьте только один источник для каждого типа страниц.
  4. Удалите ручной вывод из header.php или отключите соответствующий хук.
  5. Очистите кеш страницы, кеш объекта и CDN, если они используются.
  6. Проверьте исходный код повторно и сравните несколько шаблонов.

Как проверить результат после внедрения

Проверка должна быть не только визуальной. Откройте исходный код и убедитесь, что на странице остался ровно один тег description. Затем проверьте, что:

  • на главной description соответствует ожидаемому тексту;
  • на записи description не дублируется из excerpt и SEO-плагина одновременно;
  • на архиве рубрики не выводится description, если он не нужен;
  • в кеше и на мобильной версии нет старого варианта.

Дополнительно можно проверить заголовки и HTML через команду:

curl -s https://example.com/ | grep -i 'meta name="description"'

Если страница отдаётся через кеш, сначала очистите его. Иначе вы можете увидеть старый HTML и решить, что исправление не сработало.

Сравнение подходов: плагин, код или правка шаблона

ПодходКогда подходитМинус
SEO-плагинЕсли нужен единый источник description для сайтаНужно следить за настройками типов записей и архивов
Правка шаблонаЕсли тег добавлен вручную в темеЛегко забыть при обновлении родительской темы
Код через хукЕсли вывод зависит от условий и нужен контрольТребует аккуратности с приоритетами и remove_action

Частые ошибки и как их исправить

Оставили description и в теме, и в плагине

Это самая частая причина дубля. Исправление простое: выберите один источник и удалите второй. Если SEO-плагин уже умеет управлять description, ручной тег в теме обычно лишний.

Удалили не тот хук

Если remove_action() не сработал, проверьте имя функции и приоритет. В WordPress удаление должно совпадать с добавлением один в один.

Проверяли без очистки кеша

После правок HTML может оставаться старым из-за кеша страницы, сервера или CDN. Очистка кеша обязательна, иначе диагностика будет ложной.

Смешали description для записи и архивов

На записи description часто берут из excerpt, а на архиве — из шаблонного текста. Если один и тот же код отрабатывает везде, он может создавать одинаковые мета-теги на разных страницах. Разделяйте логику через is_singular(), is_archive() и is_home().

Что учесть для безопасности и производительности

Не храните SEO-логику в случайных правках шаблона, если сайт живёт на обновляемой теме. Лучше вынести кастомизацию в дочернюю тему или небольшой mu-plugin. Так проще контролировать изменения и не потерять их после обновления.

Если description формируется динамически, всегда очищайте текст через wp_strip_all_tags() и esc_attr(). Это снижает риск поломки HTML и случайной вставки лишних символов в атрибут.

И ещё один практический момент: не пытайтесь «улучшить SEO» массовой генерацией одинаковых description для всех страниц. Для технически чистого сайта важнее уникальность и предсказуемость вывода, чем формальная заполненность тега.

Если нужен более широкий аудит дублей и технических SEO-ошибок, удобно сочетать ручную проверку с инструментами очистки сайта и управления метаданными, например Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином сначала стоит понять, где именно рождается дубль, иначе можно отключить не тот источник.

Как добавить поддержку тёмного режима в тему WordPress
28.01.2026
Как создать динамический CSS в теме WordPress
02.12.2025
Добавление поддержки формата WebP в тему WordPress: практическое руководство
31.03.2026
Как создать адаптивную тему WordPress с нуля
31.10.2025
Удаление стандартной AJAX корзины WooCommerce и замена на собственную в теме WordPress
28.05.2026