2017-06-16 126 views
0

我想在將商品添加到購物車之前重定向到自定義頁面,因爲我想在用戶真正將商品添加到購物車之前驗證一些信息。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

爲什麼不在「添加到購物車」之前做到這一點?例如,您可以在產品展示上做到這一點,而不是等到添加到購物車。等到添加到購物車時會增加很多複雜性(下面的答案很好,但是*只是抓住了爲了使其以這種方式工作所必須做的事情)的表面。以另一種方式做。也許即使你壓制/隱藏「添加到購物車」按鈕,除非他們的社交媒體位是有效的。 –

回答

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所做的評論 - 進行驗證可能較容易完成。

相關問題