WooCommerce 订单收到基于付款方式 ID 的重定向

问题描述 投票:0回答:2

通常在 WooCommerce 中,一旦付款完成,提交的订单就会重定向到

/order-received/

是否可以将客户重定向到特定付款方式的自定义页面?

例如:

Payment method 1 -> /order-received/
Payment method 2 -> /custom-page/
Payment method 3 -> /order-received/
php wordpress woocommerce orders payment-method
2个回答
4
投票

使用条件函数

template_redirect
is_wc_endpoint_url()
操作挂钩中挂钩自定义函数,并定位您所需的付款方式以将客户重定向到特定页面:

add_action( 'template_redirect', 'thankyou_custom_payment_redirect');
function thankyou_custom_payment_redirect(){
    if ( is_wc_endpoint_url( 'order-received' ) ) {
        global $wp;

        // Get the order ID
        $order_id =  intval( str_replace( 'checkout/order-received/', '', $wp->request ) );

        // Get an instance of the WC_Order object
        $order = wc_get_order( $order_id );

        // Set HERE your Payment Gateway ID
        if( $order->get_payment_method() == 'cheque' ){
            
            // Set HERE your custom URL path
            wp_redirect( home_url( '/custom-page/' ) );
            exit(); // always exit
        }
    }
}

代码位于活动子主题(或主题)的 function.php 文件中,或者也位于任何插件文件中。

此代码经过测试并且有效。

如何获取支付网关ID(WC设置>结帐选项卡):

enter image description here


0
投票

一个小修正。

“退出”需要在最后一个条件内

add_action( 'template_redirect', 'thankyou_custom_payment_redirect');
    function thankyou_custom_payment_redirect(){
    if ( is_wc_endpoint_url( 'order-received' ) ) {
        global $wp;

        // Get the order ID
        $order_id =  intval( str_replace( 'checkout/order-received/', '', $wp->request ) );

        // Get an instance of the WC_Order object
        $order = wc_get_order( $order_id );

        // Set HERE your Payment Gateway ID
        if( $order->get_payment_method() == 'cheque' ){

            // Set HERE your custom URL path
            wp_redirect( home_url( '/custom-page/' ) );
            exit(); // always exit
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.