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)
之所以不起作用,是因为该钩子是在发送头之后执行的后期。因此,您不能将新的重定向标头发送到客户端/浏览器。
但是您使用代码的方式正确。这就是我要做的(受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
您可以将感谢页面复制到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)
| 归档时间: |
|
| 查看次数: |
18470 次 |
| 最近记录: |