2015-11-14 238 views
1

我正在嘗試做以下事情,但我被困在編碼方面。 希望有人能幫助我。Woocommerce - 從類別中刪除產品

在Woocommerce(在產品編輯頁面)我可以選擇產品的類別。 我做了一個代碼,當產品存在特定條件時,產品將被保存在額外的類別'Aanbiedingen'(id = 87)中。

if (!empty ($_POST['sale_enddate']) && ($_POST['sale_begindate'])) { 
    $cat_ids = array(87); 
    wp_set_object_terms($product_id, $cat_ids, 'product_cat', true); 
    } 

現在我想有地方(在保存)產品將從「半價」類別中刪除代碼,但它仍然會在其他類別。產品屬於'Aanbiedingen','Comfort','Therapie'和'Warmtezakken' 有人可以用代碼幫助我(保存時)產品只能在'舒適',' Therapie'和'Warmtezakken'?

我想它有一些與wp_get_object_terms類別取消,刪除值'Aanbiedingen'(或ID 87),並保存這個改變的陣列與wp_set_object_terms

我嘗試了幾件事,但我無法完成它。 有人可以幫我嗎?

+0

當你說你已經「嘗試了幾件事情」,它通常可以幫助我們,如果你在你的問題中發佈它們。 – helgatheviking

回答

1

您只需使用wp_remove_object_terms($post_id, $terms, $taxonomy)函數從對象中刪除特定的類別術語ID(在本例中爲產品自定義帖子類型)。

作爲一個側面說明,你也想用isset()檢查,而不是!empty()$_POST變量, - 你會用後一種方法得到一個警告,如果該值不在POST「d值

// category ID array used for both adding & removing 
$cat_ids = array(87); 

if (isset($_POST['sale_enddate']) && $_POST['sale_begindate']) { 
    // conditions met for adding product to category 
    wp_set_object_terms($product_id, $cat_ids, 'product_cat', true); 
} else { 
    // otherwise remove it 
    wp_remove_object_terms($product_id, $cat_ids, 'product_cat'); 
} 
+0

非常感謝!這確實是我正在尋找的代碼! 我不知道wp_remove_object_terms()的存在.... – user3406217

相關問題