Самый быстрый способ l oop через переменные продукты WooCommerce и обновить его - PullRequest
0 голосов
/ 12 апреля 2020

Я разрабатываю скрипт, который запускается через CPanel Cron Job для автоматической синхронизации цены и количества на складе всех продуктов WooCommerce с учетной базой данных.

Простые продукты извлекаются по запросу. Но для переменных продуктов количество запросов увеличивается. Следующий код синхронизирует переменные продукты:

$args = array(
    'status' => 'publish',
    'type' => 'variable',
    'limit' => -1,
);
$wooProducts = wc_get_products($args);
foreach ($wooProducts as $wooProduct) {
    foreach ($wooProduct->get_children() as $variationID) {
        $variation = wc_get_product($variationID);
        $isVariationChanged = false;
        $variationSKU = $variation->get_sku();
        if ($variationSKU == null || $variationSKU == '')
            continue;
        if ($databasePrice[$variationSKU] != null && ($variation->get_regular_price() != $databasePrice[$variationSKU])) {
            $variation->set_regular_price($databasePrice[$variationSKU]);
            $isVariationChanged = true;
        }
        if ($databaseStock[$variationSKU] != null && ((string)$variation->get_stock_quantity() != $databaseStock[$variationSKU])) {
            $variation->set_stock_quantity(intval($databaseStock[$variationSKU]));
            $isVariationChanged = true;
        }
        if ($isVariationChanged) {
            $variation->save();
        }
    }
}

Есть ли более оптимизированный / более быстрый способ такой синхронизации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...