我想在将商品添加到购物车之前重定向到自定义页面,因为我想在用户真正将商品添加到购物车之前验证一些信息。
如何在单击“添加到购物车”时设置用户重定向的页面并提供一些预购信息,然后单击“继续添加到购物车”?
这是我的第一个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' );
但它首先添加购物车然后重定向到此自定义页面。但我想重定向而不添加到购物车。
请帮忙
答案 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的评论 - 之前做验证可能比较容易。