我试图做以下事情,但我仍然坚持编码。 希望有人可以帮助我。
在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'中删除。类别,但它仍将属于其他类别。
示例:该产品属于Aanbiedingen' Comfort'' Therapie'和' Warmtezakken' 有人可以帮我提供一个代码,在那里(保存时)产品只会出现在“舒适”,“Therapie”和“#33; The;和' Warmtezakken' ?
我想它可以通过wp_get_object_terms
获取类别,删除价值' Aanbiedingen' (或id 87)并使用wp_set_object_terms
保存此已更改的数组?
我尝试了几件事,但我无法完成。 有人可以帮助我吗?
答案 0 :(得分:1)
您只需使用wp_remove_object_terms($post_id, $terms, $taxonomy)
功能从对象中删除特定类别的术语ID(在本例中为产品自定义帖子类型)。
作为旁注,您还希望使用isset()
来检查$_POST
变量,而不是!empty()
- 如果值为&n,您将使用后一种方法收到警告#39; t 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' );
}