我希望在客户付款后重定向到自定义页面。现在它变得非常香草,"您的订单已收到"页。我一直试图解决这个问题,我很确定我必须在我的主题函数文件中添加一个动作挂钩。我发现了一些我认为可行的代码,但它没有。
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
}
});
答案 0 :(得分:4)
之所以不起作用,是因为在发送标题之后,钩子会在执行的后期。因此,您无法向客户端/浏览器发送新的重定向标头。
但是你的代码是正确的。这就是我要做的事情(受到Howlin的回应,但更清洁):
add_action( 'woocommerce_thankyou', function( $order_id ){
$order = new WC_Order( $order_id );
$url = 'http://redirect-here.com';
if ( $order->status != 'failed' ) {
echo "<script type=\"text/javascript\">window.location = '".$url."'</script>";
}
});
答案 1 :(得分:3)
JavaScript重定向?认真吗?
您可以毫无问题地使用template_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;
}
}
您可以在https://rudrastyh.com/woocommerce/thank-you-page.html#redirects
中找到更多带有重定向的示例答案 2 :(得分:0)
您可以将感谢页面复制到: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>