Автоматическая синхронизация отзывов WooCommerce между сайтами WordPress

Почему важна синхронизация отзывов WooCommerce

Владельцы нескольких сайтов на WordPress с магазином WooCommerce часто сталкиваются с необходимостью поддерживать единый пул отзывов о товарах. Отзывы – важный элемент доверия пользователей и повышения конверсии. Если отзывы не синхронизированы, на каждом сайте отображается разная информация, что может запутать покупателей и снизить авторитет каждого из магазинов.

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

Обзор плагинов для синхронизации отзывов WooCommerce

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

Рассмотрим несколько вариантов:

  • WP Remote Users Sync – плагин для синхронизации пользователей, иногда его можно настроить для отзывов, но функционал ограничен.
  • Custom API + WP-Cron
  • Использование плагина WP All Import/Export

Как реализовать автоматическую синхронизацию отзывов WooCommerce через REST API

Основная идея – на одном из сайтов (источнике) создавать REST API эндпоинт, который возвращает новые отзывы, а на другом (приемнике) – регулярно запрашивать эти данные и добавлять их в базу.

Создание API-эндпоинта на сайте-источнике

Добавим в functions.php или в собственный плагин код для создания кастомного REST API маршрута:

add_action('rest_api_init', function () {
    register_rest_route('wpsync/v1', '/reviews', array(
        'methods' => 'GET',
        'callback' => 'wpsync_get_new_reviews',
        'permission_callback' => function () {
            return current_user_can('read');
        },
    ));
});

function wpsync_get_new_reviews(WP_REST_Request $request) {
    $last_sync = $request->get_param('last_sync');
    $args = array(
        'post_type' => 'product',
        'meta_query' => array(
            array(
                'key' => 'review_date',
                'value' => $last_sync,
                'compare' => '>',
                'type' => 'DATETIME'
            )
        ),
        'posts_per_page' => -1
    );
    $reviews = get_comments(array(
        'status' => 'approve',
        'post_type' => 'product',
        'date_query' => array(
            'after' => $last_sync
        )
    ));
    $data = array();
    foreach ($reviews as $review) {
        $data[] = array(
            'comment_ID' => $review->comment_ID,
            'comment_post_ID' => $review->comment_post_ID,
            'comment_author' => $review->comment_author,
            'comment_content' => $review->comment_content,
            'comment_date' => $review->comment_date,
            'comment_approved' => $review->comment_approved,
            'rating' => get_comment_meta($review->comment_ID, 'rating', true)
        );
    }
    return rest_ensure_response($data);
}

Этот код создает маршрут /wp-json/wpsync/v1/reviews, который возвращает отзывы, добавленные после даты, переданной в параметре last_sync.

Получение и сохранение отзывов на сайте-приемнике

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

function wpsync_fetch_and_insert_reviews() {
    $last_sync = get_option('wpsync_last_reviews_sync', '1970-01-01 00:00:00');
    $response = wp_remote_get('https://source-site.ru/wp-json/wpsync/v1/reviews?last_sync=' . urlencode($last_sync));
    if (is_wp_error($response)) {
        return;
    }
    $reviews = json_decode(wp_remote_retrieve_body($response), true);
    if (empty($reviews)) {
        return;
    }
    foreach ($reviews as $review) {
        // Проверяем, нет ли уже такого отзыва
        if (get_comment($review['comment_ID'])) {
            continue;
        }
        $commentdata = array(
            'comment_ID' => $review['comment_ID'],
            'comment_post_ID' => $review['comment_post_ID'],
            'comment_author' => $review['comment_author'],
            'comment_content' => $review['comment_content'],
            'comment_date' => $review['comment_date'],
            'comment_approved' => $review['comment_approved'],
            'comment_type' => '',
        );
        $comment_id = wp_insert_comment($commentdata);
        if ($comment_id && isset($review['rating'])) {
            add_comment_meta($comment_id, 'rating', intval($review['rating']), true);
        }
    }
    update_option('wpsync_last_reviews_sync', current_time('mysql'));
}

// Запускаем синхронизацию раз в час
if (!wp_next_scheduled('wpsync_hourly_reviews_sync')) {
    wp_schedule_event(time(), 'hourly', 'wpsync_hourly_reviews_sync');
}
add_action('wpsync_hourly_reviews_sync', 'wpsync_fetch_and_insert_reviews');

Этот код получает новые отзывы и добавляет их на сайт-приемник, избегая дублирования. Синхронизация запускается автоматически каждый час через WP-Cron.

Обработка возможных ошибок и нюансы синхронизации

Реализация синхронизации отзывов имеет свои подводные камни:

  • Совпадение ID комментариев. В примере мы используем оригинальные ID комментариев с сайта-источника. Если на сайте-приемнике уже есть комментарии с такими ID, возможны конфликты. Чтобы избежать этого, можно генерировать новые ID или хранить связь через мета-поля.
  • Безопасность API. В примере простой permission_callback, но для защиты можно использовать ключи API, OAuth или JWT.
  • Синхронизация удалений и обновлений. В приведенном примере только добавляются новые отзывы. Для полной синхронизации нужно обработать удаление и обновление отзывов.

Использование плагина Clearfy Pro для оптимизации процесса

Плагин Clearfy Pro поможет оптимизировать работу WordPress, очистить базу данных от мусора и повысить производительность во время синхронизации. Это особенно важно при работе с большим количеством отзывов.

Итог

Автоматическая синхронизация отзывов WooCommerce между сайтами WordPress – задача, которую можно решить с помощью кастомных REST API и WP-Cron. Такой подход дает гибкость и контроль над процессом, а при правильной реализации позволит поддерживать актуальность отзывов на всех сайтах одновременно.

Для упрощения работы и повышения стабильности рекомендуется использовать дополнительные инструменты оптимизации, например, Clearfy Pro.

Как сделать свойства пользователя в WordPress через пользовательские мета-поля
03.04.2026
Использование REST API для синхронизации пользователей и ролей WooCommerce между сайтами WordPress
23.05.2026
Автоматическая синхронизация изображений WordPress между сайтами
24.02.2026
Синхронизация полей ACF между сайтами WordPress по условию
06.01.2026
Как исправить проблему с несинхронизированным статусом заказов WooCommerce между сайтами
18.04.2026