专门避免针对特定产品的 WooCommerce 新订单通知

Avoid WooCommerce new order notification for specific product exclusively

按照此代码示例 (我还不能 post 评论)。我将代码实现为 运行 用于隔离产品,我的意思是仅当产品的顺序为 ($product_id == 5274) 时,此代码才有效:

add_filter('woocommerce_email_recipient_new_order', 'remove_free_course_notifications', 10, 2);
function remove_free_course_notifications( $recipient, $order )
{
    $page = $_GET['page'] = isset($_GET['page']) ? $_GET['page'] : '';
    if ('wc-settings' === $page) {
        return $recipient;
    }

    if (!$order instanceof WC_Order) {
        return $recipient;
    }
    //my product id is 5274 
    $items = $order->get_items();
    foreach ($items as $item) {
        $product_id = $item['product_id'];
        if ($product_id == 5274) {
            $recipient = '';
        }
        return $recipient;
    }
}

但是如果订单同时有其他项目(产品),则不会向管理员发送通知。

请告诉我如何更改此代码以发送订单中包含的其余项目的管理员通知?

这段代码有点过时了。请改用以下命令,以停止针对“独家”定义产品的新订单管理员通知:

add_filter( 'woocommerce_email_recipient_new_order', 'remove_free_course_notifications', 10, 2 );
function remove_free_course_notifications( $recipient, $order )
{
    if ( ! is_a( $order, 'WC_Order' ) ) {
        return $recipient;
    }

    $targeted_product_id = 5274; // Here set your product ID
    $other_found = $product_found = false;

    foreach ( $order->get_items() as $item ) {
        $product_id = $item->get_product_id();
        if ( $item->get_product_id() == $targeted_product_id ) {
            $product_found = true;
        } else {
            $other_found = true;
        }
    }
    
    if ( $product_found && ! $other_found ) {
        return '';
    }

    return $recipient;
}

代码进入活动子主题(或活动主题)的 functions.php 文件。应该可以。