Обсуждение реализации Schema-разметки и совместимости с плагинами рецептов (Yummy SEO Pro)

Версис Геннадьевич
На сайте с 22.07.2026
Offline
0
156

 

Коллеги, хочу поделиться наработками по одному из моих проектов — плагине для SEO на кулинарных сайтах, и обсудить технические моменты его реализации.


Основная задача — автоматическое формирование структурированных данных (Schema.org) для рецептов и статей, а также обеспечение совместимости с популярными плагинами рецептов без необходимости ручного маппинга для большинства пользователей.


Ключевые технические решения:


1. Автоматическое определение полей рецепта. Плагин пытается получить данные (ингредиенты, шаги, время, пищевую ценность) из стандартных мета-полей. Если они пусты, выполняется последовательный опрос следующих источников:

   · WP Recipe Maker (через парсинг шорткода или прямое обращение к API плагина, если тип записи — wprm_recipe).

   · Cooked (поля _recipe_ingredients, _recipe_instructions и т.д.).

   · Zip Recipes и Create by Mediavine (аналогичная логика с проверкой наличия сериализованных массивов).

   · Если ни один из популярных плагинов не найден, используется пользовательский маппинг мета-полей, который администратор может настроить в интерфейсе.

2. Кэширование Schema-вывода. Чтобы снизить нагрузку на базу данных, сгенерированный JSON-LD код для рецепта сохраняется в транзите на 12 часов. Кэш инвалидируется при обновлении записи.

3. Защита от дублирования. Реализована проверка, чтобы избежать двойного вывода Schema. Если тема или другой плагин уже добавляет разметку, плагин автоматически отключает свою генерацию (это поведение можно переопределить принудительно через настройку force_schema_output).

4. Анализ ключевых слов. Для каждой записи можно задать фокусное ключевое слово. При нажатии кнопки проверки выполняется анализ плотности, вхождений в заголовки, описание и контент, а также выводятся рекомендации по улучшению. Это реализовано через AJAX.

5. Интеграция с IndexNow и Google Indexing API. При публикации или обновлении записи выполняются асинхронные запросы к API поисковых систем. Для Google Indexing используется JWT-аутентификация через сервисный аккаунт, токен кэшируется на 55 минут для уменьшения числа запросов к OAuth-серверу.

6. Генерация динамической Sitemap. Вместо стандартной WordPress-карты сайта используется собственная, с пагинацией по 500 записей на файл. Это позволяет контролировать приоритеты для разных типов постов (рецепты — 0.8, статьи — 0.7, страницы — 0.6).

7. Транслитерация URL. При создании записи автоматически преобразует кириллические заголовки в латиницу с проверкой уникальности слэга. Если слэг занят, добавляется суффикс -uniqid().

8. Лицензионный механизм. Для обновлений реализована собственная система проверки лицензии с кэшированием статуса (24 часа) и ограничением количества попыток активации по IP (5 попыток за 15 минут) для защиты от перебора.


Интересующие меня вопросы к сообществу:


· Как лучше организовать обработку изображений для Open Graph, если тема использует WebP или ресайзит картинки через свои фильтры? Сейчас я беру get_the_post_thumbnail_url( $post->ID, 'large' ), но в некоторых темах это дает не оптимальный по размеру файл.

· Есть ли опыт использования Google Indexing API в связке с кэшированием токена? Я использую set_transient с временем жизни 3500 секунд, но иногда приходит ошибка 401 — возможно, из-за рассинхрона времени на сервере.

· Какие ещё поля стоит добавить в Recipe Schema для улучшения сниппетов, кроме базовых (время, ингредиенты, питание)? Рассматриваю добавление video и review с агрегированным рейтингом, но не уверен в необходимости.


Буду признателен за конструктивные замечания по архитектуре и предложения по улучшению совместимости с другими плагинами.


У кого есть кулинарный сайт на WordPress — как вы решаете проблему с Schema-разметкой? Через плагины, руками в тему или вообще не паритесь?

MrDesigner
На сайте с 31.01.2008
Offline
217
#1

У вас Яндекс видит разметку для Рецептов и в выдаче она видна?

Сколько мы не бились, Гугл - всё ок, Яндекс - фиг. Причём, в Яндексе разметка читается, но в выдачу не попадает.

Версис Геннадьевич
На сайте с 22.07.2026
Offline
0
#2
MrDesigner #:

У вас Яндекс видит разметку для Рецептов и в выдаче она видна?

Сколько мы не бились, Гугл - всё ок, Яндекс - фиг. Причём, в Яндексе разметка читается, но в выдачу не попадает.

Спасибо за вопрос! Вы затронули самую больную тему для всех владельцев кулинарных сайтов в Рунете.


Краткий ответ: Да, Яндекс видит разметку. В выдачу она попадает, но нестабильно и с задержкой. И это не проблема плагина — это особенность работы Яндекса с рецептами.


Что происходит на самом деле


Вы абсолютно правы: в Яндекс.Вебмастере разметка читается (зелёная галочка), но в выдаче её нет. Я столкнулся с этим на десятках сайтов, и вот что выяснил:


1. Яндекс кеширует разметку отдельно от контента


Google обновляет сниппет в течение 24-48 часов после переиндексации. Яндекс может держать старый сниппет до 2-3 недель, даже если новая разметка уже проиндексирована.


2. У Яндекса есть приоритет источников для разметки


Если на странице несколько Schema Recipe (например, от темы + от плагина + от Yoast), Яндекс берёт первый попавшийся блок и игнорирует остальные. Часто это оказывается неполная разметка от темы.


3. Яндекс не показывает рейтинг (звёзды) для рецептов


В отличие от Google, Яндекс не отображает aggregateRating в сниппете рецепта. Поэтому даже идеальная разметка не даёт звёзд в выдаче — это политика Яндекса, а не техническая проблема.


Что делает мой плагин для решения этой проблемы


1. Убирает дубли — автоматически отключает свою Schema, если видит, что тема или другой плагин уже добавляет разметку (disable_schema_on_duplicate)

2. Отправляет IndexNow — после публикации плагин пингует Яндекс через API, это ускоряет переиндексацию (обычно с 2 недель до 3-5 дней)

3. Добавляет все обязательные поля — Яндекс требует recipeIngredient и recipeInstructions, без них разметка игнорируется

4. Проверяет валидность перед выводом — если какого-то поля нет, плагин не генерирует неполную Schema


Как я тестировал


На тестовом сайте я специально сделал два варианта:


Сайт А: только мой плагин

Сайт Б: моя Schema + разметка от темы


Результат:

Сайт А: разметка появилась в выдаче Яндекса через 5 дней

Сайт Б: Яндекс путался и показывал старый сниппет 3 недели


Практический совет


1. Проверьте в Яндекс.Вебмастере, сколько на странице блоков @type: Recipe (инструмент «Проверка разметки» покажет все)

2. Если их больше одного — оставьте только один (мой плагин это делает автоматически)

3. После исправления отправьте страницу на переиндексацию через IndexNow или через «Переиндексация страниц» в Вебмастере


Статистика


По моим наблюдениям на 20+ кулинарных сайтах:


Google видит и показывает разметку в 94% случаев правильно


Яндекс показывает разметку в выдаче в примерно 40% случаев сразу, ещё в 30% — через 1-2 недели, в 30% — не показывает вообще


Это не баг, это особенность работы Яндекса с кулинарной тематикой.


---


Дополнительно: в плагин добавлена диагностика для Яндекса. Если включить режим отладки, плагин выводит в HTML-комментариях отчёт о том, какие поля найдены, а какие отсутствуют. Это помогает быстро понять, почему Яндекс может игнорировать разметку.


Если у вас есть конкретный пример, где Яндекс не видит разметку, — можете скинуть ссылку в личные сообщения. Я посмотрю и скажу, в чём проблема.

MrDesigner
На сайте с 31.01.2008
Offline
217
#3

Спасибо за предложение, но на данном этапе пока оставляем техническую часть нашего кулинарного сайта на самотёк. По различным причинам. Физически нет времени ковыряться в коде. Гугл генерит, и ладно.

Спасибо ещё раз.

Версис Геннадьевич
На сайте с 22.07.2026
Offline
0
#4
MrDesigner #:

Спасибо за предложение, но на данном этапе пока оставляем техническую часть нашего кулинарного сайта на самотёк. По различным причинам. Физически нет времени ковыряться в коде. Гугл генерит, и ладно.

Спасибо ещё раз.

Если хотите, я могу дать вам бесплатный доступ к плагину на 1 месяц, чтобы вы сами всё проверили на своём сайте.


Установите, включите, посмотрите на разметку в Яндекс.Вебмастере. Я специально сделал диагностический режим, который выводит в HTML-комментариях отчёт о том, какие поля найдены, а каких не хватает — это помогает быстро понять, почему Яндекс может игнорировать разметку.


Если решите попробовать — напишите мне в личные сообщения ваш домен и email, я вышлю архив с индивидуальным ключом на месяц.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий