PHP: foreach($prod as $q){ //получаю ID товара по артикулу if($q["articul"]) { $product_id = wc_get_product_id_by_sku((string)$q["articul"]);} //если товар есть обновляю цену if($product_id){ $product = wc_get_product($product_id ); $product->set_regular_price($q["price"]); } // если нету создаю новый else{ $product = new WC_Product_Simple(); $product->set_sku((string)$q["articul"]); $product->set_name($q["name"]); $product->set_regular_price($q["price"]); } $product->save(); } Получаю json с товарами по api. Написал плагин для обновления цен и добавления новых. Запускаю из админки отдельно по каждой категории. Большинство отрабатывает нормально , но в некоторых дает ошибку "не верный или дублированный артикул". Почему то wc_get_product_id_by_sku возвращает 0, хотя товар есть. Может кто то сталкивался с такой проблемой?
просмотри внимательно логику если нету $q["articul"] то, дальше.... --- Добавлено --- 99% программистов, когда глобально не смотрят на логику своего кода.
Uncaught WC_Data_Exception: Неверный или дублированный артикул. in /home/users/info490_wp4/site/wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-data.php:856 #1 /home/users/info490_wp4/site/wp-content/plugins/apiprod/function.php(150): WC_Product->set_sku('152210') $q["articul"] =152210 --- Добавлено --- Спасибо! Очень помогло. А по существу, кто-нибудь знает?
ты создаешь новый артикуль, когда он уже существует почему твое значение отрабатывает тот кусок, который действует "если нету создаю новый" ? Что возвращает wc_get_product_id_by_sku и почему он так делает, указывая на артикуль ?
wc_get_product_id_by_sku возвращает 0, хотя товар есть. Именно это, почему он так делает, я и хотел узнать.