ajax - 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.
}
推荐阅读
- c++ - 如何解决预编译头错误
- flutter - Flutter Firestore:如何做类似于 where('fieldName', arrayNotContains: 'something') 的事情?
- r - kable 表未正确显示在 github 上
- arrays - 在 AWK 中打印数组中的所有元素
- elasticsearch - 我如何管理弹性搜索中的布尔查询
- python - 来自JSON的电报python检查键值
- javascript - FullCalendar V3 滚动条上弹出更多事件不起作用
- java - 无法创建到 MySQL 数据库服务器的 JDBC 连接
- angular - Angular Material Date Range Picker 设置默认值
- powershell - 如何删除powershell中的最后一个逗号?