Обновить цену и наличие товара WooCommerce - PullRequest
1 голос
/ 09 июля 2020

У меня есть внешний REST API, из которого я создаю такой массив:

$arr = array(
1 => array('code' => '0100686', 'qty' => '2', 'price' => '65.22'),
2 => array('code' => '0100687', 'qty' => '1', 'price' => '5.23'),
3 => array('code' => '0100688', 'qty' => '8', 'price' => '0.28')
);

После этого мне нужно обновить цену и количество продуктов в WooCommerce. (В приведенном выше коде массива указан SKU в W C).

Затем мой код выглядит следующим образом:

foreach ($arr as $single) {
$product_id = wc_get_product_id_by_sku($single['code']);

// I need here to update the product price
// I need here to update the product in stock

}

Я искал, и есть много решений прямо через SQL Запрос или с помощью некоторых хуков, и они сказали, что я должен сделать временную очистку и т.д. c ... Я не смог придумать одно лучшее решение. Не могли бы вы помочь мне, как лучше всего решить эту задачу?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Можно попробовать так:

$arr = array(
    array( 'code' => '0100686', 'qty' => '2', 'price' => '65.22' ),
    array( 'code' => '0100687', 'qty' => '1', 'price' => '5.23' ),
    array( 'code' => '0100688', 'qty' => '8', 'price' => '0.28' )
);
foreach ( $arr as $single ) {
    $product_id = wc_get_product_id_by_sku( $single['code'] );
    if ( ! $product_id ) {
        continue;
    }
    $product = new WC_Product( $product_id );
    if ( ! $product ) {
        continue;
    }
    $product->set_price( $single['price'] );
    $product->set_stock_quantity( $single['qty'] );
    $product->save();
}
1 голос
/ 09 июля 2020

Как вы говорите, способов много. Внутри вашего l oop вам холодно, возможно, используйте метод WC_Product::setPrice(). Как объяснено здесь , вы можете использовать его как:

foreach ($arr as $single) {
    $product_id = wc_get_product_id_by_sku($single['code']);
    $wcProduct = new WC_Product($product_id);

    //price in cents
    $wcProduct->set_price(300);
    $wcProduct->save();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...