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

问题描述:

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

什么是“预购”信息?你的意思是_get_这个信息,或者_give_(你说给)。为什么不把这些字段烘焙到产品展示中并在那里请求(或提供)信息? –

+0

我想检查Facebook,Twitter和Instagram个人资料用户给予实际有效之前,他们可以将产品添加到购物车。 –

+0

为什么不在“添加到购物车”之前做到这一点?例如,您可以在产品展示上做到这一点,而不是等到添加到购物车。等到添加到购物车时会增加很多复杂性(下面的答案很好,但是*只是抓住了为了使其以这种方式工作所必须做的事情)的表面。以另一种方式做。也许即使你压制/隐藏“添加到购物车”按钮,除非他们的社交媒体位是有效的。 –

add_to_cart_action()被称为在 'wp_loaded' 的动作。

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

注::

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

这样你就可以add_to_cart_action()的前执行您的处理程序add_to_cart_action()首先检查,这实在是一个附加到购物车的请求,只是返回,如果它是不是:

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

见add_to_cart_action()在... \ woocommerce \包括\类-WC-形式处理程序.php

您需要这样做,因为所有请求都会调用“wp_loaded”。请求重定向wp_safe_redirect()后,您需要退出以防止add_to_cart_action()在此请求上运行。在验证之后,重定向处理需要再次调用原始请求,并且指示现在已经验证了该请求。

P.S. 我同意cale_b所做的评论 - 进行验证可能较容易完成。