Schema.org разметка

Настроить SiteNavigationElement Schema

Важно

⚠️ Актуальность 2026 — пункт под удалением: Google никогда не использовал SiteNavigationElement для rich-результатов. Эксперты 2026 (Soar Agency, WebFX) рекомендуют отказаться — это лишний JSON-LD в исходнике. Функционал перекрывают BreadcrumbList Schema и корректная HTML-навигация через <nav>.

Зачем настраивать SiteNavigationElement Schema

SiteNavigationElement Schema — это структурированная разметка Schema.org, которая сообщает поисковой системе структуру навигации сайта. Разметка описывает основное меню: какие разделы есть на сайте, как они связаны, какие страницы являются ключевыми. Это помогает поисковому роботу лучше понять иерархию сайта и правильно определить важность разных страниц.

Зачем это нужно, если поисковая система и так обходит ссылки в меню? Потому что ссылки — это просто ссылки. Робот видит 20 ссылок в шапке и не знает: это основное меню, вспомогательная навигация, ссылки в рекламном блоке или что-то ещё. SiteNavigationElement явно говорит: «Это навигационное меню сайта, вот его структура, вот главные разделы».

Для крупных сайтов с разветвлённой структурой это особенно важно. Интернет-магазин с сотнями категорий, информационный портал с десятками рубрик — поисковая система тратит краулинговый бюджет на обход все�� ссылок. Структурированная разметка навигации помогает роботу понять, какие разделы являются корневыми, и расставить приоритеты обхода.

Влияние на Sitelinks

Sitelinks — дополнительные ссылки под основным результатом в поисковой выдаче. Когда пользователь ищет бренд или название сайта, Google и Яндекс могут показать 4-8 ссылок на ключевые разделы сайта прямо в сниппете. SiteNavigationElement Schema помогает поисковым системам определить, какие страницы являются ключевыми разделами и заслуживают попадания в Sitelinks.

Google подчёркивает: Sitelinks генерируются автоматически алгоритмом, и Schema не гарантирует их появление. Но структурированная разметка навигации — один из сигналов, которые алгоритм учитывает при формировании Sitelinks.

Пошаговая инструкция

Шаг 1. Определите структуру навигации для разметки

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

  • Главные разделы первого уровня: Услуги, Блог, Кейсы, Инструменты, О себе, Контакты.
  • Ключевые подразделы (опционально): основные услуги, основные категории.

Не включайте в SiteNavigationElement: ссылки в футере, ссылки в боковой панели, хлебные крошки (для них есть BreadcrumbList Schema), ссылки в контенте страницы.

Шаг 2. Создайте JSON-LD разметку

Базовый пример SiteNavigationElement для сайта услуг:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "SiteNavigationElement",
      "position": 1,
      "name": "Услуги",
      "url": "https://example.ru/uslugi/"
    },
    {
      "@type": "SiteNavigationElement",
      "position": 2,
      "name": "Блог",
      "url": "https://example.ru/blog/"
    },
    {
      "@type": "SiteNavigationElement",
      "position": 3,
      "name": "Кейсы",
      "url": "https://example.ru/cases/"
    },
    {
      "@type": "SiteNavigationElement",
      "position": 4,
      "name": "Инструменты",
      "url": "https://example.ru/catalog-of-tools/"
    },
    {
      "@type": "SiteNavigationElement",
      "position": 5,
      "name": "О себе",
      "url": "https://example.ru/about/"
    },
    {
      "@type": "SiteNavigationElement",
      "position": 6,
      "name": "Контакты",
      "url": "https://example.ru/contacts/"
    }
  ]
}
</script>

Шаг 3. Добавьте вложенную навигацию (опционально)

Если меню содержит подразделы — их тоже можно разметить. Это особенно полезно для сайтов с несколькими услугами или категориями:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "SiteNavigationElement",
      "position": 1,
      "name": "Услуги",
      "url": "https://example.ru/uslugi/",
      "hasPart": [
        {
          "@type": "SiteNavigationElement",
          "name": "SEO-продвижение",
          "url": "https://example.ru/uslugi/seo-prodvizhenie/"
        },
        {
          "@type": "SiteNavigationElement",
          "name": "SEO-аудит",
          "url": "https://example.ru/uslugi/seo-audit/"
        },
        {
          "@type": "SiteNavigationElement",
          "name": "Контент-маркетинг",
          "url": "https://example.ru/uslugi/kontent-marketing/"
        }
      ]
    },
    {
      "@type": "SiteNavigationElement",
      "position": 2,
      "name": "Блог",
      "url": "https://example.ru/blog/"
    }
  ]
}
</script>

Используйте свойство hasPart для вложенных элементов навигации. Это передаёт поисковой системе иерархическую связь между разделами.

Шаг 4. Реализуйте динамическую генерацию для WordPress

В WordPress меню управляется через «Внешний вид → Меню». Чтобы SiteNavigationElement Schema автоматически обновлялась при изменении меню, генерируйте JSON-LD программно.

Добавьте в functions.php дочерней темы:

function generate_site_navigation_schema() {
  // Получаем основное меню
  $menu_name = 'primary'; // имя зоны меню
  $locations = get_nav_menu_locations();

  if (!isset($locations[$menu_name])) return;

  $menu = wp_get_nav_menu_object($locations[$menu_name]);
  $menu_items = wp_get_nav_menu_items($menu->term_id);

  if (!$menu_items) return;

  $items = [];
  $position = 1;

  foreach ($menu_items as $item) {
    if ($item->menu_item_parent == 0) { // только первый уровень
      $nav_item = [
        '@type' => 'SiteNavigationElement',
        'position' => $position,
        'name' => $item->title,
        'url' => $item->url
      ];

      // Ищем дочерние элементы
      $children = [];
      foreach ($menu_items as $child) {
        if ($child->menu_item_parent == $item->ID) {
          $children[] = [
            '@type' => 'SiteNavigationElement',
            'name' => $child->title,
            'url' => $child->url
          ];
        }
      }

      if (!empty($children)) {
        $nav_item['hasPart'] = $children;
      }

      $items[] = $nav_item;
      $position++;
    }
  }

  $schema = [
    '@context' => 'https://schema.org',
    '@type' => 'ItemList',
    'itemListElement' => $items
  ];

  echo '<script type="application/ld+json">'
    . json_encode($schema, JSON_UNESCAPED_UNICODE
      | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
    . '</script>' . "n";
}
add_action('wp_head', 'generate_site_navigation_schema');

Этот код автоматически генерирует SiteNavigationElement Schema на основе текущего WordPress-меню. При добавлении или удалении пунктов меню — разметка обновляется автоматически.

Шаг 5. Разместите разметку на всех страницах

SiteNavigationElement Schema размещается на всех страницах сайта, потому что навигационное меню присутствует на всех страницах. Если вы используете wp_head хук, как в примере выше, — разметка автоматически появится на каждой странице.

Е��ли размещаете вручную — убедитесь, что JSON-LD добавлен в общий шаблон (header.php), а не на отдельной странице.

Шаг 6. Согласуйте Schema с HTML-навигацией

Текст пунктов и URL в SiteNavigationElement должны совпадать с реальным HTML-меню на странице. Если в HTML-меню пункт называется «Услуги» и ведёт на /uslugi/, а в Schema указано «Наши услуги» и URL /services/ — это расхождение. Поисковая система может расценить несоответствие как попытку манипуляции.

Проверьте:

  • Названия пунктов в Schema совпадают с текстом ссылок в HTML-меню.
  • URL в Schema совпадают с href ссылок в меню (с учётом протокола и trailing slash).
  • Порядок элементов совпадает.
  • Все пункты основного меню представлены в Schema, лишних пунктов нет.

Шаг 7. Валидируйте и мониторьте

После добавления разметки:

  1. Проверьте через Schema Markup Validator (validator.schema.org) — убедитесь в синтаксической корректности.
  2. Проверьте через Google Rich Results Test — SiteNavigationElement не генерирует Rich Results, но тест покажет, что разметка корректно распознана.
  3. Проверьте через Яндекс Вебмастер → Валидатор микроразметки.
  4. Откройте исходный код страницы (Ctrl+U) и найдите блок JSON-LD — убедитесь, что все пункты на месте, URL корректны.

При изменении структуры меню (добавление раздела, переименование, удаление) — проверяйте, что Schema обновилась. Если используете динамическую генерацию через functions.php — обновление автоматическое. Если вручную — обновляйте каждый раз.

Шаг 8. Комбинируйте с другими навигационными Schema

SiteNavigationElement — часть навигационной экосистемы Schema.org. Для полного описания структуры сайта комбинируйте:

  • SiteNavigationElement — основное меню.
  • BreadcrumbList — хлебные крошки на каждой странице.
  • WebSite + SearchAction — описание сайта с внутренним поиском (для Sitelinks Searchbox).
  • Organization / Person — информация о владельце сайта.

Вместе эти разметки формируют полную картину для поисковой системы: кто владеет сайтом, какие разделы есть, как по ним навигировать, как устроена иерархия страниц.

Типичные ошибки

  • Разметка всех ссылок на сайте. В SiteNavigationElement включены ссылки из футера, боковой панели, контента — 50+ элементов. Это не навигация, это каталог ссылок. Размечайте только основное меню: 5-10 пунктов верхнего уровня с ключевыми подразделами.
  • Несовпадение Schema и HTML-меню. В разметке одни пункты, в реальном меню — другие. Проверяйте соответствие после каждого изменения структуры меню.
  • Размещение разметки только на главной странице. Навигационное меню присутствует на всех страницах — Schema тоже должна быть на всех. Используйте wp_head хук или общий шаблон.
  • Относительные URL вместо абсолютных. "url": "/uslugi/" вместо "url": "https://example.ru/uslugi/". Schema.org требует абсолютных URL.
  • Дублирование с BreadcrumbList. SiteNavigationElement и BreadcrumbList — разные типы разметки для разных целей. Не путайте их: BreadcrumbList описывает путь к текущей странице, SiteNavigationElement — структуру основного меню.
  • Ручная разметка при динамическом меню. Меню управляется через WordPress, но Schema захардкожена вручную. При добавлении нового раздела Schema не обновляется. Используйте динамическую генерацию из WordPress-меню.
  • Включение утилитарных пунктов. «Войти», «Корзина», «Язык» — это не навигационные разделы сайта, это утилитарные элементы интерфейса. Не включайте их в SiteNavigationElement.

Что проверить в итоге

  • SiteNavigationElement Schema добавлена на все страницы сайта в формате JSON-LD.
  • Размечены пункты основного навигационного меню (5-10 элементов верхнего уровня).
  • Для разделов с подменю добавлена вложенная структура через hasPart.
  • Названия пунктов и URL в Schema совпадают с HTML-меню.
  • URL указаны в абсолютном формате (с протоколом и доменом).
  • Указаны position для каждого элемента верхнего уровня.
  • Для WordPress — генерация автоматическая через functions.php на основе данных меню.
  • Не включены утилитарные элементы (вход, корзина, язык).
  • Разметка прошла валидацию в Schema Markup Validator и Яндекс Вебмастере.
  • Schema обновляется при изменении структуры меню — вручную или автоматически.
  • SiteNavigationElement не дублирует BreadcrumbList — это разные типы разметки.

Нужна помощь с внедрением?

Проведу аудит вашего сайта и внедрю рекомендации. Результат — чистая техническая база и план роста.

Обсудить проект

Кто ведёт проект

Александр Тригуб — частный SEO-специалист. В поисковом маркетинге с 2010 года, предприниматель с 2001-го. В SEO пришёл из собственного бизнеса — знаю, как устроены продажи не из учебников, а из собственной выручки и расходов.

  • Специализация: медицина, B2B, e-commerce и локальные услуги — ниши, где каждый лид стоит дорого.
  • Подтверждённый опыт: 500+ видео-аудитов в разных тематиках, 1092 заказа (рейтинг 4.9 / 5). Отзывы · Видео-аудиты.
  • Профили с отзывами: 728 отзывов на Kwork (4.9★) · Profi.ru (5.0★) · ORCID 0009-0009-0106-6136.
  • Формат: работаю напрямую, один специалист на проект — без менеджеров и субподрядных цепочек.
  • Отчётность: KPI по лидам и деньгам. Ежемесячный план/факт, а не PDF на 50 страниц.
15+лет в маркетинге
500+видео-аудитов
1092заказов
4.9★728 отзывов