Синхронизация интернет-магазина WooCommerce с маркетплейсом Wildberries через готовые модули часто вызывает коллизии: остатки обновляются слишком медленно, а лимиты запросов к API WB (Rate Limits) превышаются, что приводит к блокировкам. Напишем легковесный и изолированный PHP-скрипт для выгрузки остатков пакетами через новый API WB (обновление по складам).
Для работы с Wildberries требуется передавать токен в заголовке Authorization. Настроим метод подготовки аргументов для нативного класса WP_Http:
function it_gig_get_wb_headers() {
$token = 'your_wb_api_token_here';
return [
'headers' => [
'Authorization' => $token,
'Content-Type' => 'application/json',
],
'timeout' => 15
];
}
Wildberries принимает остатки массивом, где каждому товару соответствует его штрихкод (баркод) и количество. Пишем метод, который собирает данные из WooCommerce и отправляет пакетный запрос на эндпоинт WB:
function it_gig_update_wb_stocks($stocks_data) {
$url = 'https://wildberries.ru'; // 234567 - ID вашего склада WB
$args = it_gig_get_wb_headers();
$body_data = ['stocks' => []];
foreach ($stocks_data as $barcode => $quantity) {
$body_data['stocks'][] = [
'sku' => (string)$barcode,
'amount' => (int)$quantity
];
}
$args['body'] = json_encode($body_data);
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
return false;
}
$code = wp_remote_retrieve_response_code($response);
return ($code === 200);
}
Теги: