![](/img/trans.png)
[英]WordPress Plugin: How to resolve “Call to undefined function add_action() as well as add_action()”?
[英]Wordpress how to use add_action inside plugin function
我需要在AJAX響應函數中執行/調用woocommerce_cart_calculate_fees
操作,如下所示,
要求是在一定條件下為購物車添加折扣。
add_action( 'wp_ajax_tcf_et_add_estimate_to_cart', 'my_function' );
my_function()
{
// ADD SOME PRODUCTS TO THE CART
if( certain condition )
{
add_action( 'woocommerce_cart_calculate_fees', 'add_discount', 1, 1 );
function add_discount( $cart )
{
global $woocommerce;
$cart->add_fee( 'Discount' , -100 );
return $cart;
}
}
// some code
}
我知道這是完全錯誤的,但是正在尋找一種以Wordpress方式實現此目標的方法嗎? 例如在my_function
之外編寫woocommerce_cart_calculate_fees
並在需要時調用它。
是否有任何技巧或技術可以執行此操作,否則在Wordpress中無法做到?
不,這是您應該怎么做。
您可以將操作鈎子添加到woocommerce_cart_calculate_fees
如下所示:
add_action( 'woocommerce_cart_calculate_fees', 'add_discount', 1, 1 );
function add_discount( $cart )
{
if ( certain condition )
{
$cart->add_fee( 'Discount' , -100 );
}
}
然后是if
語句。
至於ajax請求,它是相同的,但是這次您沒有$cart
變量,而是使用WC()->cart
。
add_action( 'wp_ajax_tcf_et_add_estimate_to_cart', 'my_function' );
function my_function()
{
if ( certain condition )
{
WC()->cart->add_fee( 'Discount' , -100 );
}
}
我可以通過使用會話來解決此問題。 我所做的是,如果我的certain condition
為true,則向會話添加一個鍵值,然后在woocommerce_cart_calculate_fees
檢查會話是否具有,然后將Discount添加到購物車。
add_action( 'wp_ajax_tcf_et_add_estimate_to_cart', 'my_function' );
function my_function()
{
if ( certain condition )
{
session_start();
$_SESSION['_my_key_value'] = 'certain condition is true';
}
}
在add_discount
函數旁邊,我們檢查會話並為購物車添加折扣。
add_action( 'woocommerce_cart_calculate_fees', 'add_discount', 1, 1 );
function add_discount( $cart )
{
if ( isset( $_SESSION['_my_key_value'] ) )
{
$cart->add_fee( 'Discount' , -100 );
// it is important to remove data from session once it is used
unset( $_SESSION['_my_key_value'] );
}
return $cart;
}
希望對別人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.