我需要帮助找出如何一次性丢弃多个产品。如果成功创建订单,我将尝试丢弃类别中的所有产品。一、 e当我从机器类购买2种或更多产品,从衬衫类购买1种时。然后下订单,成功后,我们会看到感谢页面。此时,我希望机器类的所有产品立即被丢弃,而衬衫类的产品则保持原样。
目前,我有下面的代码,它可以工作,但从机器类别中,只有两个垃圾中的一个;
function delete_product_on_woocommerce_complete_order( $order_id ) {
if ( ! $order_id ) {
return;
}
// 1. Get order object
$order = wc_get_order( $order_id );
// 2. Initialize $cat_in_order variable
$cat_in_order = false;
// 3. Get order items and loop through them...
// ... if product in category, edit $cat_in_order
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item[\'product_id\'];
if ( has_term( \'machine\', \'product_cat\', $product_id ) ) { //Where machine is the custom product category slug
$cat_in_order = true;
break;
}
}
// TRASH if $cat_in_order == true
if ( $cat_in_order ) {
wp_trash_post($product_id);
}
}
add_action( \'woocommerce_thankyou\', \'delete_product_on_woocommerce_complete_order\', 5 );
但我想在订单成功创建后,将机器类别中的所有产品丢弃。谢谢你的帮助
最合适的回答,由SO网友:Antti Koskinen 整理而成
也许您可以将垃圾桶函数移到foreach循环中。
foreach ( $items as $item ) {
$product_id = $item[\'product_id\'];
// matching products are trashed
if ( has_term( \'machine\', \'product_cat\', $product_id ) ) {
wp_trash_post($product_id);
}
}