在添加到购物车之前,Woocommerce会重定向到自定义页面

时间:2017-06-16 17:31:04

标签: php wordpress woocommerce

我想在将商品添加到购物车之前重定向到自定义页面,因为我想在用户真正将商品添加到购物车之前验证一些信息。

如何在单击“添加到购物车”时设置用户重定向的页面并提供一些预购信息,然后单击“继续添加到购物车”?

这是我的第一个Woocommerce网站,所以我遇到了一些麻烦。到目前为止,我在教程中找到的是这段代码。

function custom_add_to_cart_redirect() { 
    return 'http://www.yourdomain.com/your-page/'; 
}
add_filter( 'woocommerce_add_to_cart_redirect', 'custom_add_to_cart_redirect' );

但它首先添加购物车然后重定向到此自定义页面。但我想重定向而不添加到购物车。

请帮忙

1 个答案:

答案 0 :(得分:0)

add_to_cart_action()被称为'wp_loaded'上的操作。

add_action( 'wp_loaded', array( __CLASS__, 'add_to_cart_action' ), 20 );

所以你可以在add_to_cart_action()之前执行你的处理程序:

add_action( 'wp_loaded', array( __CLASS__, 'your handler' ), 19 );

N.B。 add_to_cart_action()首先检查这确实是添加到购物车请求,如果不是,则返回:

if ( empty( $_REQUEST['add-to-cart'] ) || ! is_numeric( $_REQUEST['add-to-cart'] ) ) {
    return;
}

请参阅... \ woocommerce \ includes \ class-wc-form-handler.php中的add_to_cart_action()

您需要执行此操作,因为在所有请求上都会调用'wp_loaded'。在请求重定向wp_safe_redirect()之后,您需要退出以防止add_to_cart_action()在此请求上运行。验证后,重定向处理需要再次调用原始请求,并指示请求现在已经过验证。

P.S。 我同意cale_b的评论 - 之前做验证可能比较容易。