Как обновить каждый вариант продукта переменного продукта в WooCommerce - PullRequest
3 голосов
/ 10 июля 2020

У меня есть товар со списком вариантов, например, один из вариантов - «36» (ID: 17393). Я хочу установить новую цену и новое количество этого варианта товара (с внешней информацией).

введите описание изображения здесь

На данный момент у меня есть этот код, но есть некоторые функции, о которых я не знаю.

<?php
if ( $product->is_type( 'variable' ) ) {

  $dataCSV = "36,2.0" , "37,3.0" , "39,4.0"; //example of external info
  //$dataCSV have for each "talla" the quantity
  $misAtributos = $product->get_attribute('Tallas');
  //$misAtributos = 35 | 36 | 37 | 38 | 39 | 40
  $AllTallas= explode(" | ", $misAtributos);
  foreach ($AllTallas as $key => $talla) {

    foreach ($dataCSV as $key => $Qnty) {
      //first element [36, 2.0]
      //$Qnty[0] = 36
      //$Qnty[1] = 2.0
      if($talla = $Qnty[0]){
        //Update stock of and price.
      }
    }
    echo '<br>'.(float)$value;

  }

}
?>
  1. Как получить идентификатор продукта (17393 ) вместо названия вариации (36)?
  2. Как установить новую цену и новое количество для этого варианта товара?

1 Ответ

3 голосов
/ 10 июля 2020

Сначала ваш $dataCSV (внешняя информация) должен быть преобразован в многомерный массив с явным форматированием вместо строки ...

Затем вы можете l oop через каждый идентификатор варианта родительской переменной продукт таким образом (и обновите данные):

<?php
if ( $product->is_type( 'variable' ) ) {
    
    $dataCSV = "36,2.0" , "37,3.0" , "39,4.0"; // <== This requires to be a multidimensional array
    
    $attribute_label_name = 'Tallas';
    
    // Loop through the variation IDs
    foreach( $product->get_children() as $key => $variation_id ) {
        // Get an instance of the WC_Product_Variation Object
        $variation = wc_get_product( $variation_id );
        
        // Get the variation attaribute "size" value 
        $size = $product->get_attribute($attribute_label_name);
        
        // ------------------------------
        // Then in between your code HERE … / …
        // ------------------------------
        
        // Set the stock quantity
        $variation->set_stock_quantity($stock_quantity);

        // Set the stock status
        $variation->set_stock_status('instock');

        // Set price
        $variation->set_regular_price($price);
        $variation->set_price($price);

        // Save data (refresh cached data)
        $variation->save();
    }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...