На одном финансовом сайте в WordPress разметка FAQPage содержала восемь вопросов, которых не было на странице. Среди них — обещание вроде «брокер поможет в 99% случаев». Посетитель этого не видел, а поисковые роботы и нейросети, читающие JSON-LD, видели прекрасно. Так устаревший маркетинговый текст продолжал жить в разметке. Ниже — практический разбор: откуда берутся лишние схемы, как оставить ровно одну FAQPage и собрать её только из видимых вопросов.
Почему лишняя FAQPage — это проблема
Поисковики требуют, чтобы разметка соответствовала видимому контенту. Если в JSON-LD есть вопрос, которого нет на странице, это нарушает правила и может привести к ручным санкциям или потере расширенных сниппетов. Кроме того, нейросети и парсеры используют разметку как источник фактов: невидимые обещания попадают в ответы, хотя вы их давно убрали. Наконец, несколько FAQPage на одной странице создают конфликт — робот не понимает, какая схема главная.
Типичная причина — наслоение плагинов, темы и ручных вставок. Например, SEO-плагин добавляет свою FAQ-схему, тема выводит ещё одну для блока «Вопрос-ответ», а в контент вставлен старый шорткод. В итоге на странице оказывается три JSON-LD блока с типом FAQPage. Задача — оставить один, собранный из видимых вопросов.
Шаг 1. Найдите все источники разметки
Откройте исходный код страницы в браузере (Ctrl+U) и поищите application/ld+json. Выпишите все блоки, где встречается FAQPage. Дальше определите, кто их выводит. Способы:
- Отключите по очереди плагины, связанные с SEO или блоками FAQ, и посмотрите, исчезла ли разметка.
- Проверьте настройки темы: некоторые темы добавляют FAQ-схему автоматически для определённых шаблонов.
- Поищите в файлах темы и плагинов функции с wp_head или wp_footer, которые печатают JSON-LD.
- Проверьте контент страницы: возможно, в текст вставлен HTML-блок со скриптом разметки.
Типичная ошибка — удалять разметку только из контента, забывая про плагин. Или наоборот: отключать плагин, который выводит и другие полезные схемы (Organization, BreadcrumbList). Действуйте точечно.
Шаг 2. Соберите вопросы из видимого контента
Прежде чем писать код, убедитесь, что на странице есть видимый блок с вопросами и ответами. Это может быть аккордеон, обычный список или таблица. Важно: текст вопросов и ответов в разметке должен дословно совпадать с тем, что видит пользователь. Если вы используете шорткоды или динамические блоки, проверьте итоговый HTML.
Практичный приём — хранить вопросы в одном месте. Например, заведите массив в functions.php или используйте поля ACF. Но не усложняйте: если FAQ-блок статичен, можно парсить его из контента при выводе. Главное — не дублировать текст вручную в двух местах, иначе рассинхронизация неизбежна.
Пример подхода: выводите вопросы через цикл по массиву, а затем тем же массивом формируйте JSON-LD. Так вы гарантируете, что разметка и контент совпадают. Если массив меняется, меняются оба блока.
Шаг 3. Сгенерируйте одну JSON-LD и удалите остальные
Сначала отключите все автоматические генераторы FAQPage. В SEO-плагинах обычно есть настройка «включить разметку FAQ» — выключите её. В теме найдите и удалите соответствующий хук. Если не уверены, используйте remove_action с приоритетом. Например:
- Найдите функцию, которая печатает FAQ-схему, через поиск по коду.
- Определите хук (wp_head, wp_footer) и приоритет.
- Добавьте в functions.php вызов remove_action с теми же параметрами.
Затем добавьте свою функцию, которая выводит ровно один блок JSON-LD. Она должна срабатывать только на тех страницах, где FAQ действительно есть. Используйте условные теги: is_page(), is_single() или проверку наличия блока. Не выводите разметку глобально.
Внутри функции сформируйте массив с типом FAQPage, mainEntity и списком вопросов. Каждый вопрос — объект с @type: Question, name и acceptedAnswer (внутри — @type: Answer и text). Сериализуйте через wp_json_encode и оберните в script type="application/ld+json". Не забудьте экранировать вывод.
Типичная ошибка — оставить старую разметку в кэше. После изменений очистите кэш страниц и кэш объектов. Проверьте исходный код снова: должен остаться один блок FAQPage.
Шаг 4. Проверьте и поддерживайте
После внедрения прогоните страницу через валидатор структурированных данных (например, Rich Results Test от Google). Убедитесь, что все вопросы из разметки присутствуют на странице визуально. Если вы добавляете новый вопрос, он должен появиться и в контенте, и в JSON-LD одновременно. Для этого удобно использовать единый источник данных.
Регулярно проверяйте страницы с FAQ: плагины обновляются, темы меняются, старые шорткоды могут снова начать выводить схемы. Настройте простой мониторинг: раз в месяц открывайте 2–3 ключевые страницы и смотрите исходный код. Или напишите скрипт, который проверяет количество блоков FAQPage и предупреждает, если их больше одного.
Помните: разметка — это отражение контента, а не место для маркетинговых обещаний. Если вы убрали вопрос с страницы, уберите его и из JSON-LD. Иначе поисковики и нейросети будут цитировать то, чего нет.