Он собирает данные и, если товара не существует, создает его с его характеристиками (помещая в черновик), в противном случае он только обновляет цену. Примерно до 100/150 товаров все работает идеально. В какой-то момент у меня возникли ошибки Memory_limit и max_excution_time. Пробовал увеличивать значения до 1Гб. Но в какой-то момент происходит сбой.
Код:
Код: Выделить всё
public function process_products(){
$file_exist = ABSPATH . '/data/import/data.json';
if (!file_exists($file_exist)) {
return;
};
$data = file_get_contents($file_exist);
$json_data = json_decode($data, true);
$articoli = $json_data["dsDati"]["TArticolo"];
$articoli_prezzi = $json_data["dsDati"]["TArticoloPrezzo"];
$post_author = wp_get_current_user()->ID;
$products = [];
foreach ($articoli as $key => $articolo) {
$products[$key]['title'] = $articolo["DescrizioneArticolo"];
$products[$key]['sku_prodotto'] = $articolo["IdArticolo"];
$products[$key]['aliquota'] = $articolo["AliquotaIva"];
$products[$key]['quatity_stock'] = str_replace(' ', '', $articolo["QtaDisp"]);
foreach ($articoli_prezzi as $key2 => $articolo_prezzo) {
if ($products[$key]['sku_prodotto'] != null && $articolo_prezzo["Nome"] == 'L1' && $products[$key]['sku_prodotto'] == $articolo_prezzo["IdArticolo"]) {
$products[$key]['price'] = str_replace(' ', '', $articolo_prezzo["Valore"]);
}
};
// cicliamo i prodotti da inserire
/**
* # array(5) {
* ["title"]=>
* string(39) "ASTA TELESCOPICA DA 32 A 62 CON ZOCCOLO"
* ["sku_prodotto"]=>
* string(8) "00003590"
* ["aliquota"]=>
* string(2) "22"
* ["quatity_stock"]=>
* string(2) "50"
* ["price"]=>
* string(4) "8.00"
* }
**/
foreach ($products as $key => $product) {
$product_id_exist = wc_get_product_id_by_sku($product["sku_prodotto"]);
// verifichiamo se il prodotto esiste
// prodotto esistente
if ($product_id_exist != 0) {
// inseriamo il prodotto
$product_to_update = new \WC_Product($product_id_exist);
// aggiorniamo prezzo
$product_to_update->set_regular_price($product["price"]);
//aggiorniamo quantita
$product_to_update->set_stock_quantity($product["quatity_stock"]);
$product_to_update->save();
continue;
} else {
// inseriamo il prodotto
$new_product = new \WC_Product;
$new_product->set_name($product["title"]);
$new_product->set_sku($product["sku_prodotto"]);
$new_product->set_status('draft');
$new_product->set_regular_price($product["price"]);
$new_product->set_manage_stock('yes');
$new_product->set_stock_quantity(absint($product["quatity_stock"]));
$new_product->save();
}
}
};
}
Подробнее здесь: https://stackoverflow.com/questions/693 ... -json-file
Мобильная версия