通常在 WooCommerce 中,一旦付款完成,提交的订单就会重定向到
/order-received/
。
是否可以将客户重定向到特定付款方式的自定义页面?
例如:
Payment method 1 -> /order-received/
Payment method 2 -> /custom-page/
Payment method 3 -> /order-received/
使用条件函数
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设置>结帐选项卡):
一个小修正。
“退出”需要在最后一个条件内
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
}
}
}