WooCommerce:如果存在 WC session 优惠券,我如何在产品页面上显示通知?

问题描述

有点新手...我有一个调查,在提交时,我正在生成一个动态优惠券代码来激励购买产品。当用户将产品添加到购物车时,折扣代码已成功应用,但是我想在产品页面上显示一条通知,表明(因为用户参与了调查),他们将在结账时获得折扣。>

将产品添加到购物车的代码:

// Add generated coupon to cart
add_action( 'woocommerce_add_to_cart','apply_matched_coupons' );
function apply_matched_coupons() {
    if ( is_cart() || is_checkout() ) return;

    // Load coupon code
    $coupon_code = WC()->session->get( 'unique_coupon' );

    if ( $coupon_code && ! WC()->cart->has_discount( $coupon_code ) ) {
        WC()->cart->apply_coupon( $coupon_code ); // Apply coupon code
        WC()->session->__unset( 'unique_coupon' ); // remove session variable 
    }
}

我尝试添加通知的多种方式之一:

add_action( 'woocommerce_before_single_product','custom_message_before_single_product',5 ); // For single product page

function custom_message_before_single_product() {

 if ( $coupon_code && ! WC()->cart->has_discount( $coupon_code ) ) 

  wc_print_notice(sprintf('You will receive a discount at checkout!',$coupon_code),'notice');
} 

我也试过基于产品,但无论是否创建了优惠券都会出现通知:

add_action( 'woocommerce_before_single_product',5 ); // For single product page

function custom_message_before_single_product() {

global $product;

if ( $product->get_id() == 1218 &&  $coupon_code = WC()->session->get( 'unique_coupon' );) {

  wc_print_notice(sprintf('You will receive a discount at checkout!','notice');
} }

当然,我认为这是基于这样的信念,因为创建了基于会话的优惠券,因此可以获取该优惠券,或识别它已创建并在将其添加到购物车之前显示通知,但也许这不可能……?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...