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

时间:2018-06-11 23:39:00

标签: javascript php wordpress woocommerce orders

以下是流程:

  1. 客户将产品添加到购物车。
  2. 客户在结账时添加优惠券“微笑”。
  3. 当客户下订单时,该功能将在订单之前运行 详情页面加载。功能将检查“微笑”优惠券,如果它 已应用它重定向到他们将在的新页面 免费提供其他产品。如果没有,那么它继续 照常。
  4. 我一直在引用我通过Google搜索找到的两个解决方案,类似于我的部分问题。单独地,我让他们工作,但我在一起似乎无法让他们正常工作。

    这是我的代码:

    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>';
        }
    }
    

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

    我提到的两个解决方案是:

    Find applied coupon_id in cart

    Redirect with 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 个答案:

答案 0 :(得分:2)

更新:在woocommerce“订单已收到”页面(谢谢你)中,不再有WC_Cart个可用对象。相反,您需要以这种方式定位WC_Order对象:

add_action( 'woocommerce_thankyou', 'thankyou_custom_redirect', 20, 1 );
function thankyou_custom_redirect( $order_id ) {
    // Your settings bellow:
    $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文件中。经过测试和工作。