Redirect Woocommerce操作挂钩重定向到自定义感谢页面

Redirect Woocommerce操作挂钩重定向到自定义感谢页面,redirect,woocommerce,action,hook,Redirect,Woocommerce,Action,Hook,我想在客户付款后重定向到自定义页面。现在转到一个非常普通的页面,“您的订单已收到”。我一直在努力解决这个问题,我很确定我必须在我的主题函数文件中添加一个动作挂钩。我发现了一些我认为可以用的代码,但事实并非如此 add_action( 'woocommerce_thankyou', function(){ global $woocommerce; $order = new WC_Order(); if ( $order->status != 'failed' ) { wp_redire

我想在客户付款后重定向到自定义页面。现在转到一个非常普通的页面,“您的订单已收到”。我一直在努力解决这个问题,我很确定我必须在我的主题函数文件中添加一个动作挂钩。我发现了一些我认为可以用的代码,但事实并非如此

add_action( 'woocommerce_thankyou', function(){



global $woocommerce;
$order = new WC_Order();
if ( $order->status != 'failed' ) {
wp_redirect( home_url() ); exit; // or whatever url you want
}
});

您可以将感谢页面复制到:
wp content/plugins/woocommerce/templates/checkout/thankyou.php

wp content/themes/themename/woocommerce/checkout/thankyou.php
并修改该页面。如果要重定向到特定页面,请在thankyou.php文件中添加以下内容:

<script>
    window.location = 'http://example.com/some-page'
</script>

window.location=http://example.com/some-page'

这不起作用的原因是,在发送头之后,钩子的执行会延迟。因此,您不能向客户端/浏览器发送新的重定向头

但是你的代码是正确的。这就是我要做的(灵感来源于霍林的回答,但要干净得多):

add_action('woocommerce_thankyou',函数($order_id){
$order=新WC\U订单($order\U id);
$url='1http://redirect-here.com';
如果($order->status!=“failed”){
echo“window.location='”$url.“;
}
});

JavaScript重定向?真的吗

您可以毫无问题地使用
template\u redirect

例如:

add_action( 'template_redirect', 'correct_redirect' );

function correct_redirect(){

    /* we need only thank you page */
    if( is_wc_endpoint_url( 'order-received' ) && isset( $_GET['key'] ) ) {
        wp_redirect('any url');
        exit;
    }
}
您可以在这里找到更多重定向示例

add_action( 'template_redirect', 'correct_redirect' );

function correct_redirect(){

    /* we need only thank you page */
    if( is_wc_endpoint_url( 'order-received' ) && isset( $_GET['key'] ) ) {
        wp_redirect('any url');
        exit;
    }
}