WordPress:do_action在ajax回调函数中不起作用



我想在ajax任务成功完成后执行一些操作。例如,如果项目添加到购物车,我想发送一封电子邮件。也可以执行更多的操作。

设置do_action('prefix_item_added_to_cart', $args);无法识别,因此add_action不会执行任务,在我的情况下是发送电子邮件。

如果我编写代码过程代码来发送电子邮件,这很好,但使用do_action

不起作用

// ajax callback function
function my_ajax_callback() {
...
// add item to cart
$cart =. new Cart();
$cart_id = $cart->add_item($params);
// if item added successfully
if($cart_id){
// perform action
do_action('prefix_item_added_to_cart', $args);
}
...
}
// action callback
function send_email_to_user($args) {
// send email notification
wp_mail('set params for email');
}
// action
add_action('prefix_item_added_to_cart', 'send_email_to_user', $args);

作品

function my_ajax_callback() {
...
// add item to cart
$cart =. new Cart();
$cart_id = $cart->add_item($params);
// if item added successfully
if($cart_id){
// send email notification
wp_mail('set params for email');
}
...
}

您只需要调用函数。无论您从哪里获取$args,只需将其作为函数的参数传递即可。

// ajax callback function
function my_ajax_callback() {
...
// add item to cart
$cart =. new Cart();
$cart_id = $cart->add_item($params);
// if item added successfully
if($cart_id){
// perform action
send_email_to_user($args);
}
...
exit(); /// if it's ajax function, don't forget to exit or die.
}

最新更新