【发布时间】:2021-02-01 23:49:30
【问题描述】:
我想在 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');
}
...
}
【问题讨论】:
-
可能只是执行顺序的问题。当 WP 执行 AJAX 调用时,它会通过 admin-ajax.php。您应该 100% 确保您的“add_action”实际上在 AJAX 处理程序之前被调用
标签: ajax wordpress wordpress-action