2015-11-14 96 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

相关问题