Php Wordpress如何在插件函数中使用添加动作
我需要在AJAX响应函数中执行/调用Php Wordpress如何在插件函数中使用添加动作,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,我需要在AJAX响应函数中执行/调用woocommerce\u cart\u calculate\u 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_
woocommerce\u cart\u calculate\u 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
}
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_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;
}
我知道这是完全错误的,但想用wordpress的方式来做吗?比如在my\u函数
之外编写woocommerce\u cart\u计算费用
,并在需要时调用它
是否有任何技巧或技巧来执行此操作,或者在Wordpress中无法执行此操作?不,您应该这样做。
您将动作挂钩添加到
woocommerce\u cart\u calculate\u 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 );
}
}
不,你应该这样做。
您将动作挂钩添加到
woocommerce\u cart\u calculate\u 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 );
}
}
我可以通过使用会话来解决这个问题。我所做的是,如果我的
特定条件
为真,则在会话中添加一个键值,然后在woocommerce\u cart\u计算费用
中检查会话是否有折扣,然后将折扣添加到购物车中
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
}
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_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;
}
在添加折扣
功能中,我们检查会话并向购物车添加折扣
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
}
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_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;
}
希望这对某人有所帮助。我可以通过使用会话解决这个问题。我所做的是,如果我的
特定条件
为真,则在会话中添加一个键值,然后在woocommerce\u cart\u计算费用
中检查会话是否有折扣,然后将折扣添加到购物车中
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
}
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_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;
}
在添加折扣
功能中,我们检查会话并向购物车添加折扣
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
}
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_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;
}
希望这对其他人有所帮助。谢谢你的帮助,还有什么可以调用
添加折扣($cart)
的我的函数()
你能描述一下你想要实现什么吗?我的函数
是一个在wordpress中为AJAX调用运行的函数,根据我的逻辑,我需要在my\u功能中添加折扣。这是我的要求。我明白了,你能编辑你的原始帖子并添加你正在使用的ajax代码吗。。。不是全部,只是添加操作和函数名或其他使其简短但仍然有意义的内容。感谢您的更新,但它对我不起作用。谢谢您的更新,并且是否可以从我的函数()调用添加折扣($cart)
你能描述一下你想要实现什么吗?my_函数
是一个在wordpress中为AJAX调用运行的函数,根据我的逻辑,我需要在my_函数
中添加折扣。这是我的要求。我明白了,你能编辑你的原始帖子并添加你正在使用的ajax代码吗。。。不是全部,只是添加操作和函数名或其他使其简短但仍然有意义的内容。感谢您的更新,但它不适用于我。