Одинаковые H1 на разных страницах WordPress обычно не выглядят как критическая ошибка, пока сайт не начинает проседать в поиске или пока редакторы не замечают, что заголовок страницы и заголовок записи дублируют друг друга без смысла. На практике проблема часто сидит не в контенте, а в шаблоне темы, блоках конструктора или в том, как плагин выводит заголовок архива, страницы и карточки записи.
Здесь удобно подключать ИИ не для «магии», а как инструмент разборки большого массива HTML: выгрузить список H1, сопоставить их с URL и типами страниц, найти шаблонные совпадения и быстро отделить нормальные повторения от ошибок разметки.
Когда дубли H1 действительно проблема
Один и тот же H1 на странице и в заголовке карточки — это не всегда баг. Но если на нескольких URL повторяется один и тот же H1, а страницы при этом отличаются только параметрами, пагинацией, фильтрами или служебными блоками, поисковику становится сложнее понять, чем одна страница отличается от другой.
Типичные сценарии:
- у записей H1 совпадает с названием рубрики или архива;
- у страниц пагинации H1 не меняется и выглядит как основной заголовок раздела;
- в шаблоне темы H1 выводится дважды: один раз в шапке контента, второй раз внутри блока конструктора;
- на страницах с ACF/метаполями заголовок подставляется из одного и того же поля без проверки контекста;
- в многоязычном сайте перевод не меняет H1, хотя URL и мета уже локализованы.
Диагностика: как ИИ помогает быстро найти повторения
Ручной просмотр сайта работает только на маленьком проекте. Если страниц сотни, нужен список URL и их H1. Дальше ИИ удобно использовать как аналитический слой: он находит группы одинаковых заголовков, отмечает шаблонные совпадения и подсказывает, где искать источник — в теме, в плагине или в редакторе.
Что собрать перед анализом
Минимальный набор данных:
- URL страницы;
- H1;
- тип записи или шаблон;
- title страницы;
- канонический URL, если он уже настроен;
- признак пагинации или фильтра, если это архив.
Если у вас есть доступ к Screaming Frog, Sitebulb или любому другому краулеру, экспортируйте таблицу в CSV. Если нет — можно собрать данные через простой скрипт и пройтись по списку URL вручную.
Пример простого сбора H1 через PHP
Ниже пример для локальной проверки. Он не заменяет краулер, но помогает быстро собрать H1 по набору URL и передать результат в ИИ для группировки.
<?php
$urls = [
'https://example.com/page-1/',
'https://example.com/page-2/',
];
foreach ($urls as $url) {
$html = @file_get_contents($url);
if ($html === false) {
echo $url . "\tERROR\n";
continue;
}
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$h1 = $xpath->query('//h1')->item(0);
$text = $h1 ? trim(preg_replace('/\s+/', ' ', $h1->textContent)) : '';
echo $url . "\t" . $text . "\n";
}
Дальше этот список можно отдать ИИ с задачей: «сгруппируй одинаковые H1, выдели подозрительные шаблонные совпадения, предложи, где искать источник в WordPress». Важно не просить «исправить всё», а именно классифицировать проблему.
Пошаговое решение: от отчёта ИИ к правке шаблона
Когда ИИ уже показал группы повторяющихся H1, не спешите менять тексты вручную на каждой странице. Сначала нужно понять, откуда именно берётся заголовок. В WordPress это обычно один из трёх источников: редактор записи, шаблон темы или плагин, который переопределяет вывод заголовка.
Шаг 1. Определите источник H1
Проверьте проблемную страницу в браузере и откройте исходный код. Если H1 выводится из шаблона темы, его обычно видно в разметке рядом с классами темы. Если заголовок приходит из блока, он будет частью контента. Если H1 дублируется из-за конструктора, часто в HTML есть два похожих блока с разными классами.
Полезно сравнить:
- что написано в редакторе записи;
- что выводит шаблон темы;
- не вставлен ли заголовок вручную в первый блок контента;
- не подменяет ли заголовок плагин SEO или конструктор страниц.
Шаг 2. Исправьте шаблон, если H1 генерируется автоматически
Если проблема в теме, править нужно не контент, а шаблон. Пример ниже показывает безопасный вариант: выводить H1 только там, где это действительно нужно, и не дублировать его на страницах архивов или в отдельных блоках.
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
if ( is_singular() ) :
echo '<h1 class="entry-title">' . esc_html( get_the_title() ) . '</h1>';
else :
echo '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a></h2>';
endif;
endwhile;
endif;
Смысл здесь простой: на одиночной записи нужен один H1, а в списках и архивах лучше использовать H2 или H3, чтобы не плодить одинаковую структуру заголовков на странице.
Шаг 3. Если H1 задаётся из поля, добавьте проверку контекста
На проектах с ACF или похожими полями часто делают одну и ту же ошибку: поле с заголовком выводится везде без условий. В результате на главной, в архиве и на записи появляется один и тот же H1. Исправление — проверять тип страницы и подставлять заголовок только там, где это логично.
<?php
$custom_h1 = get_field('custom_h1');
if ( is_singular() && ! empty( $custom_h1 ) ) {
echo '<h1 class="page-title">' . esc_html( $custom_h1 ) . '</h1>';
} elseif ( is_singular() ) {
echo '<h1 class="page-title">' . esc_html( get_the_title() ) . '</h1>';
}
Если поле пустое, используйте стандартный заголовок записи. Так вы не сломаете страницы, где редактор не заполнил дополнительное поле.
Как использовать ИИ для проверки правок
После изменений не ограничивайтесь визуальной проверкой. ИИ полезен и на этапе валидации: он быстро сравнивает старый и новый список H1 и показывает, остались ли шаблонные повторения. Для этого достаточно повторно выгрузить данные по тем же URL и попросить модель найти:
- повторяющиеся H1 на разных URL;
- страницы, где H1 не соответствует типу контента;
- архивы, где H1 совпадает с названием записи;
- страницы, где H1 отсутствует или заменён на H2.
Если у вас есть доступ к HTML-дампу, можно дать ИИ и сам код страницы. Тогда он часто быстрее замечает, что H1 выводится дважды из-за блока темы и отдельного блока в контенте.
Проверка результата после внедрения
Проверять нужно не только глазами. Минимальный набор проверок после правки:
- откройте проблемный URL и убедитесь, что на странице один H1;
- проверьте исходный код и найдите все теги
<h1>; - пройдитесь краулером по группе страниц и сравните новые H1 с предыдущим экспортом;
- посмотрите, не сломались ли стили заголовков в мобильной версии;
- проверьте архивы, пагинацию и шаблоны таксономий отдельно от одиночных записей.
Если вы меняли шаблон темы, полезно открыть ещё и кэшированную версию страницы: иногда старый HTML остаётся в кэше и создаёт ложное ощущение, что правка не сработала.
Сравнение подходов: плагин, код или ручная правка
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Ручная правка в редакторе | Одна-две страницы с ошибкой | Быстро и без кода | Не решает системную проблему |
| Правка шаблона темы | Дубли идут из разметки | Исправляет источник ошибки | Нужно понимать структуру темы |
| Анализ через ИИ + код | Много URL и непонятный источник | Быстро находит группы и паттерны | Требует выгрузки данных и проверки руками |
Частые ошибки и как их исправить
Ошибка 1: менять текст H1 на каждой странице вручную. Это работает только если проблема точечная. Если источник в шаблоне, вы просто замаскируете баг.
Ошибка 2: путать H1 и title. Title может быть короче, длиннее или содержать бренд, а H1 — это видимый заголовок страницы. Их не обязательно делать одинаковыми.
Ошибка 3: оставлять два заголовка в блоках конструктора. Часто один H1 приходит из шаблона, второй — из первого блока контента. В итоге на странице два одинаковых заголовка, и это видно только в коде.
Ошибка 4: не учитывать архивы и пагинацию. На первой странице архива H1 ещё может быть нормальным, а на второй и третьей он уже выглядит как дублирующийся служебный заголовок.
Ошибка 5: проверять только опубликованные страницы. Иногда дубли сидят в черновиках, шаблонах или скрытых типах записей, которые потом попадают в индексацию после публикации.
Практические советы по безопасности и производительности
Если для диагностики вы используете собственный скрипт, не запускайте его на боевом сайте без ограничений. Лучше работать на копии или хотя бы ограничить список URL. Не давайте ИИ доступ к приватным данным, если в выгрузке есть служебные поля, внутренние ссылки или персональная информация.
Для больших сайтов лучше не сканировать весь домен каждый раз. Сначала берите только проблемные типы страниц: записи, рубрики, архивы авторов, страницы пагинации. Так вы быстрее найдёте источник дублей и не перегрузите сервер.
Если вам нужен более широкий аудит дублей и технических проблем, в экосистеме WPShop есть Clearfy Pro, который закрывает часть задач по чистке сайта и SEO-оптимизации: https://wpshop.ru/plugins/clearfy?utm_source=wp-ai.ru&utm_medium=article&utm_campaign=ai-find-and-fix-duplicate-h1-headings-wordpress
Но даже с плагином логика остаётся той же: сначала диагностика, потом точечная правка, потом повторная проверка. ИИ здесь полезен именно как инструмент для разбора массива страниц и поиска повторяющихся шаблонов, а не как замена проверке в коде.