微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WordPress:do_action在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.
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。