Send an Email notification to the admin for pending order status in WooCommerce

后端 未结 2 1763
孤街浪徒
孤街浪徒 2020-12-05 05:52

In WooCommerce, when a customer goes to checkout from cart and submit the order, if the payment is not processed, the order is set to \"pending\" payment. The Admin doesn\'t

相关标签:
2条回答
  • 2020-12-05 06:30

    UPDATE 2 (Change from woocommerce_new_order to woocommerce_checkout_order_processed thanks to Céline Garel)

    This code will be fired in all possible cases when a new order get a pending status and will trigger automatically a "New Order" email notification:

    // New order notification only for "Pending" Order status
    add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );
    function pending_new_order_notification( $order_id ) {
    
        // Get an instance of the WC_Order object
        $order = wc_get_order( $order_id );
    
        // Only for "pending" order status
        if( ! $order->has_status( 'pending' ) ) return;
    
        // Send "New Email" notification (to admin)
        WC()->mailer()->get_emails()['WC_Email_New_Order']->trigger( $order_id );
    }
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    This code is tested and works in WooCommerce versions 2.6.x and 3+.


    A more customizable version of the code (if needed), that will make pending Orders more visible:

    // New order notification only for "Pending" Order status
    add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );
    function pending_new_order_notification( $order_id ) {
        // Get an instance of the WC_Order object
        $order = wc_get_order( $order_id );
    
        // Only for "pending" order status
        if( ! $order->has_status( 'pending' ) ) return;
    
        // Get an instance of the WC_Email_New_Order object
        $wc_email = WC()->mailer()->get_emails()['WC_Email_New_Order'];
    
        ## -- Customizing Heading, subject (and optionally add recipients)  -- ##
        // Change Subject
        $wc_email->settings['subject'] = __('{site_title} - New customer Pending order ({order_number}) - {order_date}');
        // Change Heading
        $wc_email->settings['heading'] = __('New customer Pending Order'); 
        // $wc_email->settings['recipient'] .= ',name@email.com'; // Add email recipients (coma separated)
    
        // Send "New Email" notification (to admin)
        $wc_email->trigger( $order_id );
    }
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    This code is tested and works in WooCommerce versions 2.6.x and 3+.

    In this version you can customize the email heading, subject, add recipients...

    0 讨论(0)
  • 2020-12-05 06:50

    I've tried with LoicTheAztec answer, @LoicTheAztec thanks a lot for your great code.

    I have just changed the action hook from woocommerce_new_order to woocommerce_checkout_order_processed to get it to work.

    Here is the action : add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );

    Hope that helps.

    0 讨论(0)
提交回复
热议问题