当前位置: 首页 > 知识库问答 >
问题:

根据WooCommerce订单接收页面中应用的优惠券创建重定向

谢建业
2023-03-14

以下是流程:

  1. 客户将产品添加到购物车

我一直在引用通过谷歌搜索找到的两个解决方案,这两个解决方案与我的部分问题类似。我单独让他们工作,但在一起,我似乎无法让他们正常工作。

这是我的代码:

add_action( 'woocommerce_thankyou' , 'sq_checkout_custom_redirect' );

function sq_checkout_custom_redirect($order_id) {

global $woocommerce;
$order = new WC_Order( $order_id );
$coupon_id = 'smile';
$applied_coupon = $woocommerce->cart->applied_coupons;
$url = 'https://site.mysite.org/score-you-win/';

if( $applied_coupon[0] === $coupon_id ) {
    echo "<script type=\"text/javascript\">window.location.replace('".$url."');</script>";
    } else {
    echo '<h3 style="font-size:200px; z-index:30000; color:#000 !important;">Coupon not applied</h3>';
    }
}

无论我申请什么优惠券,我都会收到“优惠券未申请”的信息没有重定向发生。

我所引用的两个解决方案是:

在购物车中找到应用coupon_id

用JS重定向

此代码成功运行:

add_action( 'woocommerce_thankyou', function ($order_id){
$order = new WC_Order( $order_id );
$coupon_id = "smile";
$url = 'https://site.mysite.org/score-you-win/';

if ($order->status != 'failed') {
    echo "<script type=\"text/javascript\">window.location.replace('".$url."');</script>";
}
});

这将成功运行:

function product_checkout_custom_content() {

global $woocommerce;
$coupon_id = 'smile';
$applied_coupon = $woocommerce->cart->applied_coupons;
if( $applied_coupon[0] === $coupon_id ) {
echo '<span style="font-size:200px; z-index:30000; color:#red !important;">We are happy you bought this product =)</span> ';
} else {
    echo '<h3 style="font-size:200px; z-index:30000; color:#000 !important;">Coupon not applied</h3>';
}
} 
add_action( 'woocommerce_thankyou' , 'sq_checkout_custom_redirect' );

共有1个答案

左丘弘致
2023-03-14

更新:在woocommerce“订单已收到”页面(谢谢),没有更多可用的WC\u购物车对象。相反,您需要以以下方式瞄准WC\u Order对象:

add_action( 'woocommerce_thankyou', 'thankyou_custom_redirect', 20, 1 );
function thankyou_custom_redirect( $order_id ) {
    // Your settings below:
    $coupon_id = 'smile';
    $url       = 'https://site.mysite.org/score-you-win/';

    // Get an instance of the WC_order object
    $order = wc_get_order($order_id);
    $found = false;

    // Loop through the order coupon items
    foreach( $order->get_items('coupon') as $coupon_item ){
        if( $coupon_item->get_code() == strtolower($coupon_id) ){
            $found = true; // Coupon is found
            break; // We stop the loop
        }
    }

    if( $found )
        echo "<script type=\"text/javascript\">window.location.replace('".$url."');</script>";
    else
        echo '<h3 style="font-size:200px; z-index:30000; color:#000 !important;">Coupon not applied</h3>';
}

代码function.php活动子主题(或活动主题)的文件中。测试和工作。

 类似资料:
  • 我想重定向我的购物车/结账页面到新的页面,如果优惠券是在WooCommerce应用。我有一张免费打印的优惠券。如果用户应用它,我希望页面被重定向到一个新的页面,在那里用户可以选择一些产品。优惠券应用后,我很难重定向页面。任何问题都会得到极大的评价。 谢谢

  • 在WooCommerce,我试图找到一种方法,如果购物车的重量超过100磅,可以给整个客户的订单打10%的折扣。我正在实现这一目标。对于下一步,我正在寻找一种方法,通过操作/钩子通过functions.php.以编程方式应用优惠券代码 看来我可以使用woocommerce\u ajax\u apply\u优惠券功能来实现这一点(http://docs.woothemes.com/wc-apidoc

  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 提示 由于右侧的演示是通过iframe标签引入的,缺少了手机端运行的相关API,或者因为演示区域太小,或者电脑分别率不够高 ,导致演示可能会有问题,手机端有不会这些问题,请在右上角的"演示"中用

  • 优惠券 功能介绍:店铺可定期发布优惠券,增加更多用户粘性。 步骤 从【营销中心】→【优惠券】→【添加优惠券】。 设置优惠券名称、面额、发行量、有效时间、以及使用条件。

  • 我想隐藏购物车页面上所有产品的优惠券字段,除了具有特定产品类别的产品。我创建了以下代码,但每隔一段时间,这似乎与时间无关,我得到一个错误消息显示。它不会阻止代码工作,也不会导致任何问题。然而,我似乎无法跟踪为什么我得到错误消息或如何解决它。 我收到这个错误信息 ========== 文件/home/westviewdess/public\u html/wp content/plugins/wdcf

  • 当客户通过Ajax单击thank you页面上的一个按钮时,我正在尝试将woocommerce订单的状态从processing更改为completed。 我的代码如下: 和我的functions.php中的php 我知道ajax在没有语句的情况下可以正常工作,但使用它,我会得到一个500内部服务器错误。我还知道,如果我不使用ajax并将其挂到thank you页面中,那么它就会毫无问题地更改状态。