2015-10-05 90 views
1

我正在使用woocommerce插件版本2.4.7并希望使用woocommerce REST api填充我的woo商店(我正在使用api的V3)PHP - 使用woocommerce REST api(V3)问题创建类别和标签

下面是PHP代码:

print_r($client->products->create(array('title' => 'product_name','sku' => 'sku_value', 'type' => 'simple', 'regular_price' => '1000', 'short_description'=>'short description', 'categories' => Array ('category1','category2','category3'), 'tags'=> array('product_tag')))); 

创建的产品,但两个属性不即类别标签

["categories"]=> 
    array(0) { 
    } 
["tags"]=> 
    array(0) { 
    } 
创建

如上所示,在api调用中不会创建类别和标签(返回一个空数组),但会创建所有其他属性。

我应该提到,一旦我升级了woocommerce插件,就会发生这种情况。我以前的版本是V2.3,而使用这一切都运行良好。在升级我的插件后,立即停止在创建产品时创建类别和标签属性。

我卡在这一点,真的不知道为什么会这样,所以任何帮助是值得欢迎

回答

1

版本2和3 WooCommerce REST API的使用下面的代码来创建类别

// Product categories 
if (isset($data['categories']) && is_array($data['categories'])) { 
    $term_ids = array_unique(array_map('intval', $data['categories'])); 
    wp_set_object_terms($product_id, $term_ids, 'product_cat'); 
} 

可以看出代码“期望”一个整数数组而不是字符串。您需要更改传递给API的数据结构,将('category1','category2','category3'),更改为各自的ID,并且代码将工作。标签也一样。

'categories' => Array('category1','category2','category3'), 
// replace category1, category2 etc with the relevant integer ID's 
+0

嘿阿南德。我没有使用现有的类别,而是为每个正在创建的产品创建一个类别。所以当我说'category1'时,这是我使用api调用创建的类别。如上所述,在我将woocommerce插件更新到最新版本之前,这完全正常工作。 – developer11

+0

是的,新API中的内容已更改。这将是一个2步骤的过程,首先创建类别,然后在创建产品时传递这些类别的整数ID。看看[documentation](http://woothemes.github.io/woocommerce-rest-api-docs/#products-properties),它表示:_在写入模式下需要传递一个类别ID数组(整数)_ –

+0

嗯..似乎相当低效..当说例如我想用数据库中的产品使用api填充我的商店时会发生什么。我遍历产品并将它们填充到我的商店。这是不是意味着我不得不在晚些时候分配类别,因为当我创建产品时我无法创建它们。这将会非常繁琐,因为我有多个产品! – developer11