WooCommerce - send custom email on custom order status change

后端 未结 4 766
轻奢々
轻奢々 2020-11-30 05:00

I added a custom status wc-order-confirmed:

// Register new status
function register_order_confirmed_order_status() {
    register_post_status(          


        
4条回答
  •  囚心锁ツ
    2020-11-30 05:35

    As you can see here : https://github.com/woothemes/woocommerce/blob/f8a161c40673cb019eb96b04c04a774ca040a15a/includes/abstracts/abstract-wc-order.php#L2097 you can use this hook :

    do_action( 'woocommerce_order_status_' . $new_status, $this->id );

    with you custom status should give :

    add_action( 'woocommerce_order_status_wc-order-confirmed' , array( $this, 'trigger' ) );

    I imagine that you also add you custom email to the mailer, if not :

    just add :

    add_filter( 'woocommerce_email_classes', array($this,'edit_woocommerce_email_classes' ));
    function edit_woocommerce_email_classes( $email_classes ) {
        require_once( 'your-email-class.php' );
        $email_classes[ 'WC_Confirmed_Order_Email' ] = new WC_Confirmed_Order_Email();
        return $email_classes;
     }
    

    Edit :

    You need to instanciate woocommerce emails before so you can add

    add_action( 'init' , 'initiate_woocommerce_email' );
    
    function initiate_woocommerce_email(){
       // Just when you update the order_status on backoffice
       if( isset($_POST['order_status']) ) {
            WC()->mailer();
        }
    }
    

提交回复
热议问题