gpt4 book ai didi

php - 即使 WooCommerce 中的购物车为空,也可以通过 URL 中的 GET 方法应用优惠券折扣

转载 作者:可可西里 更新时间:2023-11-01 13:12:58 29 4
gpt4 key购买 nike

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

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

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),那么优惠券代码就可以完美应用。

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

只希望在观众点击链接时应用代码。

我怎样才能让它工作?

最佳答案

正确的做法应该是:

  • 将购物车 session 中 URL 中的优惠券代码设置为自定义数据。
  • 当客户将第一件商品添加到购物车时,应用此优惠券代码的折扣。
  • 如果客户清空购物车,则取消此优惠券的折扣

You can set any existing coupon code from any Url (like shop page, other archives pages, products pages, my account pages, or any existing pages) adding to this existing url:
?code=DISCOUNTCODE at the end
(where DISCOUNTCODE is your coupon code name).

代码如下:

// Set coupon code as custom data in cart session
add_action('wp_loaded', 'add_coupon_code_to_cart_session');
function add_coupon_code_to_cart_session() {
// Exit if no code in URL or if the coupon code is already set cart session
if( empty( $_GET["code"] ) || WC()->session->get( 'custom_discount' ) ) return;

if( ! WC()->session->get( 'custom_discount' ) ) {
$coupon_code = esc_attr($_GET["code"]);
WC()->session->set( 'custom_discount', $coupon_code );
// If there is an existing non empty cart active session we apply the coupon
if( ! WC()->cart->is_empty() ){
WC()->cart->add_discount( $coupon_code );
}
}
}

// Add coupon code when a product is added to cart once
add_action('woocommerce_add_to_cart', 'add_coupon_code_to_cart', 10, 6 );
function add_coupon_code_to_cart( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ){
$coupon_code = WC()->session->get( 'custom_discount' );
$applied_coupons = WC()->session->get('applied_coupons');

if( empty($coupon_code) || in_array( $coupon_code, $applied_coupons ) ) return;

WC()->cart->add_discount( $coupon_code );
}

// Remove coupon code when user empty his cart
add_action('woocommerce_cart_item_removed', 'check_coupon_code_cart_items_removed', 10, 6 );
function check_coupon_code_cart_items_removed( $cart_item_key, $cart ){
$coupon_code = WC()->session->get( 'custom_discount' );

if( $cart->has_discount( $coupon_code ) && $cart->is_empty() );
$cart->remove_coupon( $coupon_code );
}

代码位于您的事件子主题(或事件主题)的 function.php 文件或任何插件文件中。

这已经过测试并且有效

关于php - 即使 WooCommerce 中的购物车为空,也可以通过 URL 中的 GET 方法应用优惠券折扣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814228/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com