V
V
Vladimir Kulikov2020-05-15 13:41:48
WooCommerce
Vladimir Kulikov, 2020-05-15 13:41:48

Why can't create products from array in woo rest api?

Why is it impossible to create products from an array?

The code:

<?php 
// $max_tover = count($result->products);
// for ($i = 1; $i <= count($result->products); $i++)
// {
//   $hi_products[$i] = array(
//   'name' => $arr_tovar[$i]->name, 
//   'status' => 'pending', 
//   'categories' => array(
//       array( 
//           'id_iiko_категории' => $arr_tovar[$i]->productCategoryId 
//       )
//   ),
//   'regular_price' => $arr_tovar[$i]->price );
// }
$arr_tovar = $result->products;
    $params = [
        'headers' => array(
            'Authorization' => 'Basic ' . base64_encode( 'admin:123123123' )
        ),
        'body' => [],
    ];
/*
   'body' => array(
     'name' => 'My test2', 
     'status' => 'pending', 
     'categories' => array(
       array( 
         'id' => 15 
       )
     ),
     'regular_price' => '9.99' 
     // more params http://woocommerce.github.io/woocommerce-rest-api-docs/?shell#product-properties
   )*/
   
    foreach ($arr_tovar as $item) {
         $params['body'][] = array(
            'name' => $item->name, 
            'status' => 'pending', 
            'categories' => array(
                array( 
                    'id_iiko_категории' => $item->productCategoryId 
                )
            ),
            'price' => $item->price
        );
    }

    $api_response = wp_remote_post( $url_site.'/wp-json/wc/v3/products', $params);

    $body = json_decode( $api_response['body'] );
    if( wp_remote_retrieve_response_message( $api_response ) === 'Created' ) {
       echo 'Этот продукт ' . $body->name . ' успешно создан';
    }else{
        echo 'Ошибка'. wp_remote_retrieve_response_message( $api_response );
    }
    
    echo '<pre> $body: <br>';
    var_dump( $body );
    echo '</pre><br><br>';
    echo '<pre> $params["body"]<br>';
    var_dump( $params['body'] );
    echo '</pre>';

?>

var_dump( $body ); outputs:
object(stdClass)#17280 (66) {
  ["id"]=>
  int(277)
  ["name"]=>
  string(10) "Товар"
  ["slug"]=>
  string(8) "tovar-20"
  ["permalink"]=>
  string(40) "http://localhost/ecler/product/tovar-20/"
  ["date_created"]=>
  string(19) "2020-05-15T13:38:32"
  ["date_created_gmt"]=>
  string(19) "2020-05-15T10:38:32"
  ["date_modified"]=>
  string(19) "2020-05-15T13:38:32"
  ["date_modified_gmt"]=>
  string(19) "2020-05-15T10:38:32"
  ["type"]=>
  string(6) "simple"
  ["status"]=>
  string(7) "publish"
  ["featured"]=>
  bool(false)
  ["catalog_visibility"]=>
  string(7) "visible"
  ["description"]=>
  string(0) ""
  ["short_description"]=>
  string(0) ""
  ["sku"]=>
  string(0) ""
  ["price"]=>
  string(0) ""
  ["regular_price"]=>
  string(0) ""
  ["sale_price"]=>
  string(0) ""
  ["date_on_sale_from"]=>
  NULL
  ["date_on_sale_from_gmt"]=>
  NULL
  ["date_on_sale_to"]=>
  NULL
  ["date_on_sale_to_gmt"]=>
  NULL
  ["price_html"]=>
  string(0) ""
  ["on_sale"]=>
  bool(false)
  ["purchasable"]=>
  bool(false)
  ["total_sales"]=>
  int(0)
  ["virtual"]=>
  bool(false)
  ["downloadable"]=>
  bool(false)
  ["downloads"]=>
  array(0) {
  }
  ["download_limit"]=>
  int(-1)
  ["download_expiry"]=>
  int(-1)
  ["external_url"]=>
  string(0) ""
  ["button_text"]=>
  string(0) ""
  ["tax_status"]=>
  string(7) "taxable"
  ["tax_class"]=>
  string(0) ""
  ["manage_stock"]=>
  bool(false)
  ["stock_quantity"]=>
  NULL
  ["stock_status"]=>
  string(7) "instock"
  ["backorders"]=>
  string(2) "no"
  ["backorders_allowed"]=>
  bool(false)
  ["backordered"]=>
  bool(false)
  ["sold_individually"]=>
  bool(false)
  ["weight"]=>
  string(0) ""
  ["dimensions"]=>
  object(stdClass)#17279 (3) {
    ["length"]=>
    string(0) ""
    ["width"]=>
    string(0) ""
    ["height"]=>
    string(0) ""
  }
  ["shipping_required"]=>
  bool(true)
  ["shipping_taxable"]=>
  bool(true)
  ["shipping_class"]=>
  string(0) ""
  ["shipping_class_id"]=>
  int(0)
  ["reviews_allowed"]=>
  bool(true)
  ["average_rating"]=>
  string(1) "0"
  ["rating_count"]=>
  int(0)
  ["related_ids"]=>
  array(5) {
    [0]=>
    int(266)
    [1]=>
    int(267)
    [2]=>
    int(276)
    [3]=>
    int(259)
    [4]=>
    int(271)
  }
  ["upsell_ids"]=>
  array(0) {
  }
  ["cross_sell_ids"]=>
  array(0) {
  }
  ["parent_id"]=>
  int(0)
  ["purchase_note"]=>
  string(0) ""
  ["categories"]=>
  array(1) {
    [0]=>
    object(stdClass)#17294 (3) {
      ["id"]=>
      int(17)
      ["name"]=>
      string(35) "основная категория"
      ["slug"]=>
      string(6) "eklery"
    }
  }
  ["tags"]=>
  array(0) {
  }
  ["images"]=>
  array(0) {
  }
  ["attributes"]=>
  array(0) {
  }
  ["default_attributes"]=>
  array(0) {
  }
  ["variations"]=>
  array(0) {
  }
  ["grouped_products"]=>
  array(0) {
  }
  ["menu_order"]=>
  int(0)
  ["meta_data"]=>
  array(0) {
  }
  ["_links"]=>
  object(stdClass)#17297 (2) {
    ["self"]=>
    array(1) {
      [0]=>
      object(stdClass)#17285 (1) {
        ["href"]=>
        string(49) "http://localhost/ecler/wp-json/wc/v3/products/277"
      }
    }
    ["collection"]=>
    array(1) {
      [0]=>
      object(stdClass)#17298 (1) {
        ["href"]=>
        string(45) "http://localhost/ecler/wp-json/wc/v3/products"
      }
    }
  }
}


var_dump( $params['body'] ); displays >400 products. Here are 2 of them:
array(462) {
  [0]=>
  array(4) {
    ["name"]=>
    string(56) "Коробка Vip именная на 10 эклеров"
    ["status"]=>
    string(7) "pending"
    ["categories"]=>
    array(1) {
      [0]=>
      array(1) {
        ["id_iiko_категории"]=>
        NULL
      }
    }
    ["price"]=>
    int(1300)
  }
  [1]=>
  array(4) {
    ["name"]=>
    string(53) "Коробка VIP именная на 5 элеров"
    ["status"]=>
    string(7) "pending"
    ["categories"]=>
    array(1) {
      [0]=>
      array(1) {
        ["id_iiko_категории"]=>
        NULL
      }
    }
    ["price"]=>
    int(1000)
  }

Answer the question

In order to leave comments, you need to log in

1 answer(s)
W
WP Panda, 2020-05-15
@wppanda5 WooCommerce

Because you don’t need to read stupid and not very tutorials if you can’t find an error in them yourself and debug the code. It's no offense, it's just a fact.
There are docks, everything is extremely accessible there.
https://woocommerce.github.io/woocommerce-rest-api...
And this Well, trash, you don’t need to call variables and array elements in Cyrillic, and in this case, you just need id there ["id_iiko_категории"]

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question