1

除了 Woocommerce 结帐具有的默认帐单电子邮件地址字段外,我还有一个自定义结帐字段,该字段从客户那里获取第二个电子邮件地址。结帐完成后,我想向两个电子邮件地址发送一封电子邮件。电子邮件已成功发送到计费电子邮件,但不是来自自定义字段的电子邮件。

我正在使用过滤器woocommerce_payment_complete_order_status来获取order_id和发送邮件。而且,我正在使用该操作woocommerce_checkout_fields添加自定义字段,它正在成功执行。

add_action( 'woocommerce_checkout_fields', 'my_woocommerce_checkout_fields' );
function my_woocommerce_checkout_fields( $fields ) {
    foreach( WC()->cart->get_cart() as $cart_item ){
        $product_id = $cart_item['product_id'];
        if( $product_id == 786 ) {
            $fields['billing']['billing_field_byten_email'] = array(
                'label'     => __('Partner Email'),
                'placeholder'   => _x('', 'woocommerce'),
                'required'  => false,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
        }
    }
    return $fields;
}

add_filter('woocommerce_payment_complete_order_status','my_payment_complete_order_status', 10, 2);
function my_payment_complete_order_status( $order_status, $order_id ){
    $order = new WC_Order($order_id);
    $order_billing = $order->get_billing_email();
    $partner_email = $order->get_meta('billing_field_byten_email');
    wp_mail( $order_billing, "Subject test 3", "Message test 3" );
    wp_mail( $partner_email, "Subject test 3", "Message test 3" );
    return $order_status;
    return $order_id;
}

我希望它在下订单后立即向这两个电子邮件地址发送电子邮件。

4

1 回答 1

-1

嘿,你可以做那个使用签名动作woocommerce_new_order

// Function to send mail
function send_emails($order_id) {
      $order = wc_get_order($order_id);

      $billing_email = $order->get_billing_email();
      $partner_email = $order->billing_field_byten_email

       $send_subject ="Your Subject";
       $send_message = "Your Message";

       //send email
       wp_mail( $billing_email, $send_subject, $send_message );

       wp_mail( $partner_email, $send_subject, $send_message );
}


add_action( 'woocommerce_new_order', 'func_send_emails');

在此处阅读有关 woocommerce 钩子的更多信息

于 2019-08-18T17:17:25.017 回答