Woocommerce动作钩子重定向到自定义感谢页面

use*_*752 5 hook redirect action woocommerce

我想在客户付款后重定向到自定义页面.现在它变得非常香草,"你的订单已被收到"页面.我一直试图解决这个问题,我很确定我必须在我的主题函数文件中添加一个动作钩子.我发现了一些我认为会起作用但却没有的代码.

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
}
});
Run Code Online (Sandbox Code Playgroud)

Pel*_*red 5

之所以不起作用,是因为该钩子是在发送头之后执行的后期。因此,您不能将新的重定向标头发送到客户端/浏览器。

但是您使用代码的方式正确。这就是我要做的(受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>";
    }
});
Run Code Online (Sandbox Code Playgroud)


小智 5

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更多带有重定向的示例https://rudrastyh.com/woocommerce/thank-you-page.html#redirects


How*_*wli 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>
Run Code Online (Sandbox Code Playgroud)