即使在WooCommerce中购物车为空,也可以通过URL中的GET方法申请优惠券折扣

时间:2017-10-18 15:46:02

标签: php wordpress woocommerce cart coupon

我有一个插件,可以向他们输入的电子邮件发送支持者推荐优惠券代码。当观众收到这封电子邮件时,我想创建一个流程,点击电子邮件中的“立即购物”,优惠券将自动添加。

截至目前,对于“立即购物”按钮下的链接,我输入了以下内容:

websitename.biz/cart__trashed?code=DISCOUNTCODE

要处理$code我把它放在我的functions.php文件中:

add_action('woocommerce_before_cart', 'discount');
function discount( ) {
    global $woocommerce;
    $code= $_GET["code"];
   if(!empty($code)){       
    if($woocommerce->cart->add_discount($code)){ 
    echo '<div class="woocommerce_message"><strong>Applied coupon!</strong></div>';
        }
    }
}

我面临的问题是:

  • 如果观众访问网站时购物车中没有任何内容,优惠券将不会被应用。
  • 如果有些东西被添加并留在那里(因为一个cookie),那么优惠券代码将被完美应用。

我相信它是因为购物车是空的,代码不起作用。

只需要在受众点击链接时应用代码。

我怎样才能使这个工作?

3 个答案:

答案 0 :(得分:10)

正确的方法应该是:

  • 将购物车会话中的网址中的优惠券代码设置为自定义数据。
  • 当客户将第一件商品添加到购物车时,请使用此优惠券代码中的折扣。
  • 如果客户空车
  • ,请从此优惠券中删除折扣
  

您可以从任何网址设置任何现有的优惠券代码(例如商店页面,其他存档页面,产品页面,我的帐户页面或任何现有网页)添加到此现有网址:
{{1最后
(其中?code=DISCOUNTCODE是您的优惠券代码名称)

以下是代码:

DISCOUNTCODE

代码进入活动子主题(或活动主题)的function.php文件或任何插件文件中。

这是经过测试和运作的

答案 1 :(得分:1)

使用以下代码使coupan在任何情况下都有效

add_filter('woocommerce_coupon_is_valid','coupon_always_valid',10,1);
function coupon_always_valid($valid){
     $valid = true;
     return $valid ; 
}

答案 2 :(得分:0)

add_action('woocommerce_before_cart', 'discount');
function discount( ) {
    global $woocommerce;
    $code= $_GET["code"];
   if(!empty($code)){       
    if(WC()->session->set( 'applied_coupons', $code )){ 
    echo '<div class="woocommerce_message"><strong>Applied coupon!</strong></div>';
        }
    }
}