2015-10-05 154 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