我想在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\');
}
...
}
最合适的回答,由SO网友:Sally CJ 整理而成
Note: OP and me resolved the question/issue via chat — 尽管实际的问题来源还不确定,但在OP使用的实际AJAX回调中,实际上没有(或者可能OP忘记了做)do_action()
电话:)
原始修订答案(供参考):
如果您的实际代码中有类似的内容,即操作已正确注册:
add_action( \'wp_ajax_<your action>\', \'my_ajax_callback\' ); // for logged-in users
add_action( \'wp_ajax_nopriv_<your action>\', \'my_ajax_callback\' ); // for all other users
add_action( \'prefix_item_added_to_cart\', \'send_email_to_user\' );
那么我不明白为什么回调函数没有被调用——当然,除非(
if ( $cart_id )
) 退货
false
.
但那是什么$args
在您的add_action()
呼叫该参数应为整数,即回调优先级。