Как добавить поддержку отзывов в тему WordPress с использованием Schema.org

Диагностика проблемы: почему отзывы не отображаются корректно и не индексируются

Многие разработчики тем WordPress добавляют простой вывод отзывов пользователей на страницы товаров или услуг, но при этом не обеспечивают правильной разметки данных для поисковых систем. В результате отзывы не индексируются или не отображаются в виде расширенных сниппетов (rich snippets) в Google. Это снижает видимость и CTR сайта.

Проверьте, есть ли на вашем сайте отзывы с правильной семантикой Schema.org. Для этого воспользуйтесь тестом структурированных данных Google. Если отзывы не распознаются, значит, в теме нет поддержки правильной разметки.

Пошаговое решение: как добавить поддержку отзывов с разметкой Schema.org в тему WordPress

1. Создаем пользовательское поле для оценок

В админке можно использовать Advanced Custom Fields (ACF) или создать мета-поле вручную. Для примера реализуем вручную:

function add_review_meta_box() {
    add_meta_box(
        'review_score',
        'Оценка отзыва',
        'render_review_meta_box',
        'post', // или другой тип записи
        'side',
        'default'
    );
}
add_action('add_meta_boxes', 'add_review_meta_box');

function render_review_meta_box( $post) {
    $value = get_post_meta($post->ID, '_review_score', true);
    echo '<label for="review_score">Оценка (1-5):</label>';
    echo '<input type="number" id="review_score" name="review_score" min="1" max="5" value="' . esc_attr($value) . '" style="width:100%;" />';
}

function save_review_meta_box_data($post_id) {
    if (isset($_POST['review_score'])) {
        $score = intval($_POST['review_score']);
        if ($score >= 1 && $score <= 5) {
            update_post_meta($post_id, '_review_score', $score);
        } else {
            delete_post_meta($post_id, '_review_score');
        }
    }
}
add_action('save_post', 'save_review_meta_box_data');

2. Выводим отзывы с разметкой Schema.org в шаблоне темы

Добавьте в файл single.php или в соответствующий шаблон следующий код, чтобы вывести отзыв и оценку с микроданными:

if (have_posts()) : while (have_posts()) : the_post();
    $review_score = get_post_meta(get_the_ID(), '_review_score', true);
    ?>
    <article itemscope itemtype="https://schema.org/Review">
        <h1 itemprop="name"><?php the_title(); ?></h1>
        <div itemprop="reviewBody"><?php the_content(); ?></div>
        <div itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating">
            <meta itemprop="worstRating" content="1" />
            <meta itemprop="bestRating" content="5" />
            <span itemprop="ratingValue"><?php echo esc_html($review_score ?: '0'); ?></span> из 5
        </div>
    </article>
    <?php
endwhile; endif;

Проверка результата после внедрения

1. Опубликуйте или обновите запись с заполненным полем оценки.
2. Откройте страницу записи в браузере, проверьте исходный код — должны присутствовать атрибуты itemscope и itemprop с правильными значениями.
3. Протестируйте URL через Google Rich Results Test. Должна отображаться поддержка типа "Review" с оценкой.

Частые ошибки и как исправить

  • Отсутствие обязательных свойств Schema.org: не добавлены reviewBody или ratingValue. Исправить — добавить соответствующие элементы с правильными itemprop.
  • Использование неверного типа Schema: например, AggregateRating вместо Review там, где нужен отзыв. Проверьте документацию Schema.org.
  • Данные выводятся без разметки: забыли добавить атрибуты itemscope и itemtype. Проверьте шаблон.
  • Недопустимые значения рейтинга: рейтинг вне диапазона 1-5. Добавьте валидацию при сохранении.

Практические советы по безопасности и производительности

  • Сохраняйте пользовательские данные с проверкой и очисткой (используйте intval, sanitize_text_field и др.).
  • Для массового количества отзывов используйте кэширование вывода, чтобы снизить нагрузку на базу.
  • Не выводите лишние данные в разметке, чтобы не перегружать страницу и не создавать путаницу для парсеров.

Сравнение вариантов реализации добавления отзывов

МетодПреимуществаНедостатки
Ручное добавление метаполей и разметки Полный контроль над выводом, нет зависимостей Требует навыков разработки, больше времени на поддержку
Плагины для отзывов (например, WP Customer Reviews) Быстрая настройка, встроенная разметка Schema.org Плагины могут конфликтовать с темой, лишний код
Использование ACF для метаполей + ручной вывод разметки Удобная админка, гибкость в выводе Нужно писать шаблонный код для разметки
Как создать динамические фильтры в теме WordPress для кастомных типов записей
13.12.2025
Оптимизация кода темы WordPress для улучшения производительности
15.01.2026
Как добавить поддержку WebP в тему WordPress с примерами кода
22.03.2026
Как сделать автоматический скрытый sidebar в теме WordPress
26.01.2026
Как создать шорткод в WordPress своими руками
10.11.2025