WPReboot

Как настроить микроразметку в WordPress-теме для статей и сайта

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

Для большинства WordPress-сайтов удобнее формат JSON-LD: он размещается в отдельном блоке и не требует добавлять атрибуты в HTML-шаблоны. Сначала проверьте, что уже выводит сайт, затем настройте один источник разметки и протестируйте результат.

Какая разметка нужна сайту и статье

Для базовой схемы контентного сайта обычно достаточно описать сам сайт и его публикации. Для сайта подходит тип WebSite, для издателя — Organization или, если публикации выпускает конкретный автор от своего имени, Person. Для записей WordPress используйте тип BlogPosting — он уточняет, что это статья в блоге. Также встречается более общий тип Article.

В разметке статьи указывают заголовок, дату публикации и изменения, автора, издателя и URL страницы. Изображение можно добавить, если у записи есть подходящая главная картинка. Не вписывайте сведения, которых нет на самой странице: разметка должна описывать видимое содержание, а не создавать его вместо текста.

Термин «микроразметка» часто используют для разных способов описания данных. Schema.org — словарь типов и свойств, а JSON-LD — формат, в котором эти данные можно передать поисковику. Для WordPress это обычно проще, чем размечать элементы статьи атрибутами прямо в HTML. При этом наличие JSON-LD само по себе не гарантирует расширенный результат в поиске: его показ зависит от правил поисковой системы и качества страницы.

Проверьте, что уже выводят тема и плагины

Откройте страницу записи и главную страницу сайта в браузере, затем просмотрите исходный код страницы. Ищите application/ld+json, schema.org и атрибуты вроде itemscope или itemtype. JSON-LD может находиться в блоке <script type="application/ld+json">, а микроразметка другого формата — непосредственно в HTML элементов.

Проверьте несколько типов страниц: главную, запись и, если они важны для сайта, страницу автора или рубрики. Одна тема может добавлять данные только в шаблон записи, а SEO-плагин — выводить общую информацию на всех страницах. Посмотрите настройки SEO-плагина и темы, если в них есть разделы Schema, Structured data или «Микроразметка».

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

Настройте разметку через тему или SEO-плагин

Если тема предлагает настройки Schema.org, укажите в них название сайта и сведения об издателе, а для записей выберите тип статьи. Названия пунктов зависят от конкретной темы. Убедитесь, что автор и даты берутся из записи WordPress, а не заданы одним значением для всех публикаций.

Если нужных настроек в теме нет, проверьте SEO-плагин: многие такие плагины формируют базовую разметку сайта и публикаций. Не включайте второй генератор Schema, не выяснив, что уже выводит тема. Если оба инструмента позволяют управлять типом статьи, оставьте эту функцию только в одном месте.

Когда тема и плагины не формируют нужную базовую схему, её можно добавить кодом. Следующий пример выводит данные о сайте на всех публичных страницах, а BlogPosting — только для обычных записей WordPress. Используйте его лишь после проверки, что аналогичную разметку не создают тема и плагины. Разместите код в дочерней теме или в плагине для пользовательских сниппетов, а не в файле родительской темы: обновление темы может удалить изменения.

<?php
add_action( 'wp_head', 'wpreboot_basic_site_schema', 30 );

function wpreboot_basic_site_schema() {
    $site_url = home_url( '/' );
    $organization_id = trailingslashit( $site_url ) . '#organization';

    $graph = array(
        array(
            '@type'     => 'WebSite',
            '@id'       => trailingslashit( $site_url ) . '#website',
            'url'       => $site_url,
            'name'      => get_bloginfo( 'name' ),
            'publisher' => array( '@id' => $organization_id ),
        ),
        array(
            '@type' => 'Organization',
            '@id'   => $organization_id,
            'name'  => get_bloginfo( 'name' ),
            'url'   => $site_url,
        ),
    );

    if ( is_singular( 'post' ) ) {
        $post = get_post();

        if ( $post instanceof WP_Post ) {
            $article = array(
                '@type'            => 'BlogPosting',
                'headline'         => get_the_title( $post ),
                'mainEntityOfPage' => array(
                    '@id' => get_permalink( $post ),
                ),
                'datePublished'    => get_post_time( DATE_W3C, true, $post ),
                'dateModified'     => get_post_modified_time( DATE_W3C, true, $post ),
                'author'           => array(
                    '@type' => 'Person',
                    'name'  => get_the_author_meta( 'display_name', $post->post_author ),
                    'url'   => get_author_posts_url( $post->post_author ),
                ),
                'publisher'        => array( '@id' => $organization_id ),
            );

            $image = get_the_post_thumbnail_url( $post, 'full' );
            if ( $image ) {
                $article['image'] = array( $image );
            }

            $graph[] = $article;
        }
    }

    $schema = array(
        '@context' => 'https://schema.org',
        '@graph'   => $graph,
    );

    echo '<script type="application/ld+json">';
    echo wp_json_encode(
        $schema,
        JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT
    );
    echo '</script>';
}

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

Этот код обрабатывает стандартные записи WordPress. Страницы и пользовательские типы записей он не размечает как статьи. Если на сайте публикации хранятся в пользовательском типе записи, условие is_singular('post') нужно адаптировать под его фактический slug. Такая доработка зависит от структуры сайта и может потребовать помощи разработчика.

Как проверить результат

После настройки очистите кэш сайта и откройте исходный код страницы записи. Убедитесь, что JSON-LD присутствует один раз в ожидаемом виде, заголовок совпадает с видимым заголовком публикации, даты и автор указаны верно, а URL ведёт на эту же страницу. Если вы используете код из примера, на главной странице и записи должны быть описания сайта и издателя, а на записи дополнительно — объект BlogPosting.

Затем проверьте URL инструментом Google Rich Results Test: он показывает, распознаны ли поддерживаемые Google структурированные данные и есть ли ошибки. Для проверки корректности словаря Schema.org можно использовать Schema Markup Validator. Эти инструменты отвечают на разные вопросы: успешная проверка Schema.org не означает, что Google покажет расширенный результат, а тест Google не заменяет проверку фактического содержания страницы.

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

Разметка дополняет, но не заменяет структуру страницы

Schema не исправляет неверную иерархию заголовков, не добавляет отсутствующий автора и не улучшает содержание статьи. Тема по-прежнему должна формировать понятную HTML-структуру, выводить заголовок страницы и корректно отображать контент на мобильных устройствах. Скорость загрузки также зависит не только от темы: влияют изображения, плагины, сервер, кэширование и сторонние скрипты.

Поэтому сначала обеспечьте соответствие данных реальной странице, а затем проверяйте разметку инструментами. Не используйте Schema.org как способ добавить в поисковую выдачу обещание или характеристику, которых читатель не найдёт на сайте. Корректная схема помогает поисковику интерпретировать страницу, но не гарантирует позицию или специальное оформление результата.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше