2013-04-15 75 views
3

有沒有人知道可以應用插入一個功能之前插入一個項目使用WooCommerce項目插入購物車的過濾器或掛鉤?我有一個類似的問題,因爲這個帖子:有沒有辦法掛鉤到WooCommerce之前項目被添加到購物車

Wordpress. Woocommerce. Action hook BEFORE adding to cart

但是,OP的評論似乎沒有工作或過於模糊,我不能讓他們的工作,我可以找到有關woocommerce_before_add_to_cart的文檔。

我想要做的就是顯示錯誤,我會添加邏輯,一旦我可以掛接到正確的行動:

function checkProd(){ 
global $woocommerce; 
$woocommerce->add_error(__('ERROR', 'woocommerce')); 
return; 
} 
add_action('woocommerce_variable_add_to_cart', 'checkProd'); 

回答

2

,我已經找到了woocommerce掛鉤的最佳資源是實際上是存儲庫本身,他們有非常好的評論代碼,非常可讀。

https://github.com/woothemes/woocommerce/blob/master/woocommerce-hooks.php

我相信一個解決方案存在你想在其中一個部分來解決問題:

/** 
* Product Add to cart 
* 
* @see woocommerce_template_single_add_to_cart() 
* @see woocommerce_simple_add_to_cart() 
* @see woocommerce_grouped_add_to_cart() 
* @see woocommerce_variable_add_to_cart() 
* @see woocommerce_external_add_to_cart() 
*/ 
add_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); 
add_action('woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30); 
add_action('woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30); 
add_action('woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30); 
add_action('woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30); 


/** 
* Cart Actions 
* 
* @see woocommerce_update_cart_action() 
* @see woocommerce_add_to_cart_action() 
* @see woocommerce_load_persistent_cart() 
*/ 
add_action('init', 'woocommerce_update_cart_action'); 
add_action('init', 'woocommerce_add_to_cart_action'); 
add_action('wp_login', 'woocommerce_load_persistent_cart', 1, 2); 

如果繼續有利用上述動作鉤覺得問題免費向我扔更多的細節,我可以嘗試引導你通過。祝你好運!

+1

感謝您的答覆尼克。我試圖使用上述行動,但迄今沒有運氣。我試圖做的總體目標是,如果有人點擊將可變產品添加到購物車,功能會檢查是否已添加特定產品。如果所需產品尚未放入購物車,則會引發錯誤,並且可變產品不會添加到購物車中。我可以在稍後處理邏輯,現在我所要做的就是獲取調用函數的操作,並顯示一條錯誤消息以顯示我迷惑了正確的操作。 – RyGuy

+0

您是否介意發佈一些代碼,以便我可以更具體地瞭解您實施解決方案的方式? add_action('woocommerce_simple_add_to_cart','do_something_foo'); 函數do_something_foo(){ } –

+0

對不起,我已經在上面添加了幾行代碼。 – RyGuy

0

我需要做一些動作前添加到購物車,所以我做了這樣

add_action('init', function(){ 
    //if user clicked http://example.com/shop/?add-to-cart=42 
    if(!is_admin() && isset($_REQUEST['add-to-cart'])){ 
     //do something 
    } 
}); 

用於處理GET和POST請求$ _REQUEST。

相關問題