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

时间:2014-08-04 07:59:59

标签: redirect woocommerce action hook

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

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
}
});

3 个答案:

答案 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>