【问题标题】:Display coupon message on another pages on woocommerce在 woocommerce 的其他页面上显示优惠券消息
【发布时间】:2023-02-01 01:44:43
【问题描述】:

我创建了一个自定义链接以自动将优惠券添加到购物车 ( /cart/?coupon_code=bemvindo ),但是当重定向到购物车并且购物车为空时不显示消息。

我需要向客户展示应用的优惠券消息。

我试图将此代码添加到 cart-empty.php 但没有按预期工作。

功能.php:

function show_coupon_notice_on_cart_empty( $coupon_code ) {
   wc_add_notice( 'Cupom ' . $coupon_code . ' foi aplicado com sucesso ao seu carrinho.', 'success' ); 
} 
add_action( 'woocommerce_applied_coupon', 'show_coupon_notice_on_cart_empty' );

woocommerce/购物车/购物车-empty.php

<div class="woocommerce-notices-shortcode woocommerce">
  <?php 
    $coupons = WC()->cart->get_applied_coupons();
    if ( $coupons ) {
      wc_print_notice( 'Cupom ' . implode( ', ', $coupons ) . ' foi aplicado com sucesso ao seu carrinho.', 'notice' );
    }
    wc_print_notices(); 
  ?>
</div>

我使用的优惠券链接代码:

/**
 *  Coupon link - Set session variable on page load if the query string has coupon_code variable.
 */

function ts_get_custom_coupon_code_to_session() {

  if( isset( $_GET[ 'coupon_code' ] ) ) {
  
       // Ensure that customer session is started
  
       if( !WC()->session->has_session() )
  
           WC()->session->set_customer_session_cookie(true);
  
       // Check and register coupon code in a custom session variable
  
       $coupon_code = WC()->session->get( 'coupon_code' );
  
       if( empty( $coupon_code ) && isset( $_GET[ 'coupon_code' ] ) ) {
  
           $coupon_code = esc_attr( $_GET[ 'coupon_code' ] );
  
           WC()->session->set( 'coupon_code', $coupon_code ); // Set the coupon code in session
  
       }
  
  }
  }
  add_action( 'init', 'ts_get_custom_coupon_code_to_session' );
  
  /* Apply Coupon code to the cart if the session has coupon_code variable */
  function ts_apply_discount_to_cart() {
  // Set coupon code
  $coupon_code = WC()->session->get( 'coupon_code' );
  if ( ! empty( $coupon_code ) && ! WC()->cart->has_discount( $coupon_code ) ){
       WC()->cart->add_discount( $coupon_code ); // apply the coupon discount
       WC()->session->__unset( 'coupon_code' ); // remove coupon code from session
  }
  }
  add_action( 'woocommerce_before_cart_table', 'ts_apply_discount_to_cart', 10, 0 );

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    尝试将代码从 cart-empty.php 移至活动主题的 functions.php 文件。

    在 functions.php 中,添加以下代码:

    function show_coupon_notice_on_cart_empty() {
    if ( WC()->cart->has_discounts() ) {
    $coupons = WC()->cart->get_applied_coupons();
    wc_add_notice( 'Coupon ' . implode( ', ', $coupons ) . ' has been successfully applied to your cart.', 'success' );
    }
    }
    add_action( 'woocommerce_before_cart', 'show_coupon_notice_on_cart_empty' );
    

    【讨论】:

    • 它不工作 Faisal,我不知道发生了什么,但没有显示优惠券消息。我正在用新代码更新答案。如果我 echo $coupons 返回数组。谢谢
    • 'cart-empty.php' 文件用于在购物车为空时显示内容。它可能不是显示有关已应用优惠券的通知的正确位置。尝试将代码添加到“cart.php”文件中,该文件用于显示购物车内容并且无论购物车是否为空都应该运行。
    • 为了让您更好地理解:我创建了一个自动将优惠券添加到购物车的链接 ( ?coupon_code=bemvindo ) 并且我会放置商店或购物车页面以重定向客户,但我需要成功消息出现即使购物车是空的
    • 我用完整代码更新了问题。
    • 这对您要尝试做的事情有意义吗? function show_coupon_notice_on_cart_empty( $coupon_code ) { if ( WC()->cart->is_empty() ) { wc_add_notice( '优惠券 ' . $coupon_code . ' 已成功应用于您的购物车。', '成功' ); } } add_action( 'woocommerce_applied_coupon', 'show_coupon_notice_on_cart_empty' );
    猜你喜欢
    • 2014-09-08
    • 1970-01-01
    • 2019-06-06
    • 2015-03-17
    • 1970-01-01
    • 2018-08-22
    • 2020-01-22
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多