如何以编程方式丢弃多个帖子/产品

时间:2019-02-23 作者:Kolawole Emmanuel Izzy

我需要帮助找出如何一次性丢弃多个产品。如果成功创建订单,我将尝试丢弃类别中的所有产品。一、 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 );
但我想在订单成功创建后,将机器类别中的所有产品丢弃。谢谢你的帮助

1 个回复
最合适的回答,由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);
        }
    }

相关推荐

通过admin-ajax.php阅读帖子

我正在尝试读取通过ajax调用(admin ajax.php)提交的表单POST值。这篇文章已经准备好并提交了。以下是我在子主题中的服务器端操作挂钩functions.phpadd_action(\'save_post\', \'address_save_postdata\',1,1); add_action( \'wp_ajax_wilcity_handle_review_listing\', \'address_save_postdata\' ); add_action( \