为了账号安全,请及时绑定邮箱和手机立即绑定

在 WooCommerce 订单上使用优惠券代码时发送电子邮件通知

在 WooCommerce 订单上使用优惠券代码时发送电子邮件通知

PHP
慕盖茨4494581 2023-09-15 17:42:05
使用特定优惠券时如何向业务伙伴发送订单通知?我在这里找到了应用优惠券时实例的解决方案: Send an email notificationwhen a certain coupon code is apply in WooCommerce但是,我需要找到提交订单后何时提交的解决方案,因为订单并不总是在应用优惠券后提交。每张优惠券都有自己的电子邮件地址。
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

首先,我们在优惠券管理页面添加一个设置字段,用于设置优惠券的电子邮件收件人:


// Add a custom field to Admin coupon settings pages

add_action( 'woocommerce_coupon_options', 'add_coupon_text_field', 10 );

function add_coupon_text_field() {

    woocommerce_wp_text_input( array(

        'id'                => 'email_recipient',

        'label'             => __( 'Email recipient', 'woocommerce' ),

        'placeholder'       => '',

        'description'       => __( 'Send an email notification to a defined recipient' ),

        'desc_tip'    => true, // Or false


    ) );

}


// Save the custom field value from Admin coupon settings pages

add_action( 'woocommerce_coupon_options_save', 'save_coupon_text_field', 10, 2 );

function save_coupon_text_field( $post_id, $coupon ) {

    if( isset( $_POST['email_recipient'] ) ) {

        $coupon->update_meta_data( 'email_recipient', sanitize_text_field( $_POST['email_recipient'] ) );

        $coupon->save();

    }

}

如果已为所应用的优惠券设置了电子邮件收件人,则系统会将每张所应用的优惠券的电子邮件发送到已提交的订单。


警告!仅选择以下功能之一:


对于 woocommerce 版本 最高 4.3 (新挂钩)


// For Woocommerce version 4.3+

add_action( 'woocommerce_checkout_order_created', 'custom_email_for_orders_with_applied_coupon' );

function custom_email_for_orders_with_applied_coupon( $order ){

    $used_coupons = $order->get_used_coupons();


    if( ! empty($used_coupons) ){

        foreach ( $used_coupons as $coupon_code ) {

            $coupon    = new WC_Coupon( $coupon_code ); // WC_Coupon Object

            $recipient = $coupon->get_meta('email_recipient'); // get recipient


            if( ! empty($recipient) ) {

                $subject = sprintf( __('Coupon "%s" has been applied'), $coupon_code );

                $content = sprintf( __('The coupon code "%s" has been applied by a customer'), $coupon_code );

                wp_mail( $recipient, $subject, $content ); // Send email

            }

        }

    }

}

或者对于所有 WooCommerce 版本(自版本 3.0 起)


// For all Woocommerce versions (since 3.0)

add_action( 'woocommerce_checkout_update_order_meta', 'custom_email_for_orders_with_applied_coupon' );

function custom_email_for_orders_with_applied_coupon( $order_id ){

    $order = wc_get_order( $order_id );


    $used_coupons = $order->get_used_coupons();


    if( ! empty($used_coupons) ){

        foreach ( $used_coupons as $coupon_code ) {

            $coupon    = new WC_Coupon( $coupon_code ); // WC_Coupon Object

            $recipient = $coupon->get_meta('email_recipient'); // get recipient


            if( ! empty($recipient) ) {

                $subject = sprintf( __('Coupon "%s" has been applied'), $coupon_code );

                $content = sprintf( __('The coupon code "%s" has been applied by a customer'), $coupon_code );

                wp_mail( $recipient, $subject, $content ); // Send email

            }

        }

    }

}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。

https://img1.sycdn.imooc.com//6504272100010f1f06520276.jpg

查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信