Как синхронизировать WooCommerce между сайтами WordPress

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

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

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

  • Обеспечить одинаковую базу товаров и их описание на всех сайтах.
  • Синхронизировать остатки, чтобы не продавать то, чего нет в наличии.
  • Обрабатывать заказы централизованно или хотя бы иметь доступ к ним на всех ресурсах.

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

Обзор методов синхронизации WooCommerce

Существует несколько подходов:

  1. Плагины синхронизации WooCommerce. Есть готовые решения, которые позволяют настроить обмен данными между сайтами через API или общую базу.
  2. Собственные скрипты на PHP с использованием REST API WooCommerce. Можно написать код, который будет периодически подтягивать товары и заказы с главного сайта на второстепенные.
  3. Общая база данных или репликация. Сложный вариант, когда сайты работают на одной базе, но это редко удобно и безопасно.

Рассмотрим самые практичные способы.

Плагины для синхронизации WooCommerce между сайтами

1. WooCommerce Multistore

Плагин WooCommerce Multistore позволяет объединить несколько магазинов WooCommerce в единую сеть с общей базой товаров, остатков и заказов. Он поддерживает:

  • Синхронизацию товаров и их характеристик.
  • Общий учёт остатков.
  • Централизованную обработку заказов.

Преимущество — удобный интерфейс и минимальный код. Недостаток — платное решение и возможные ограничения в настройках.

2. WP All Import и WP All Export с дополнениями

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

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

Собственный код для синхронизации WooCommerce через REST API

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

Пример функции для получения товаров с удалённого сайта

function wpsync_get_remote_products($remote_url, $consumer_key, $consumer_secret) {
    $endpoint = $remote_url . '/wp-json/wc/v3/products';
    $args = [
        'headers' => [
            'Authorization' => 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret),
        ],
    ];
    $response = wp_remote_get($endpoint, $args);
    if (is_wp_error($response)) {
        return [];
    }
    $body = wp_remote_retrieve_body($response);
    return json_decode($body, true);
}

Эта функция обращается к REST API удалённого сайта и получает список товаров.

Обновление товаров на локальном сайте после получения

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

function wpsync_update_local_products($products) {
    foreach ($products as $product_data) {
        $product_id = wc_get_product_id_by_sku($product_data['sku']);
        if (!$product_id) {
            $product = new WC_Product_Simple();
        } else {
            $product = wc_get_product($product_id);
        }
        $product->set_name($product_data['name']);
        $product->set_regular_price($product_data['regular_price']);
        $product->set_sku($product_data['sku']);
        $product->set_description($product_data['description']);
        $product->save();
    }
}

Так можно регулярно обновлять локальный каталог из главного источника.

Синхронизация остатков и заказов

Для остатков можно в функцию обновления товара добавить логику, которая обновляет количество с помощью set_stock_quantity(). Важно следить за тем, чтобы изменения количества корректно отражались на всех сайтах.

Заказы можно синхронизировать похожим способом, используя REST API для заказов: /wp-json/wc/v3/orders. Для этого нужно настроить приём заказов на главном сайте и при необходимости создание дублей на других.

Пример получения заказов с удалённого сайта

function wpsync_get_remote_orders($remote_url, $consumer_key, $consumer_secret) {
    $endpoint = $remote_url . '/wp-json/wc/v3/orders';
    $args = [
        'headers' => [
            'Authorization' => 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret),
        ],
    ];
    $response = wp_remote_get($endpoint, $args);
    if (is_wp_error($response)) {
        return [];
    }
    $body = wp_remote_retrieve_body($response);
    return json_decode($body, true);
}

Практические советы при реализации синхронизации WooCommerce

  • Безопасность: Используйте HTTPS и ключи API с минимальными правами.
  • Периодичность обновления: Не делайте синхронизацию слишком часто, чтобы не перегружать сервер.
  • Логирование ошибок: Ведите логи, чтобы оперативно выявлять проблемы.
  • Тестирование на копии сайта: Перед запуском на живом магазине проверяйте на тестовой среде.

Синхронизация WooCommerce — задача не из простых, но при правильном подходе и использовании API или специализированных плагинов можно добиться стабильной работы нескольких магазинов с общей базой данных товаров и заказов.

Как синхронизировать WordPress между сайтами: пошаговое руководство
02.11.2025
Как синхронизировать пользовательские аватары WordPress между сайтами
21.03.2026
Автоматическая синхронизация пользовательских данных WordPress между сайтами
17.11.2025
Как сделать свойства контакта в WordPress в Contact Form 7
22.11.2025
Обратный синхрон в WordPress: решение проблем и пример кода
18.03.2026