wordpress为来自不同插件的单个ajax操作添加了多个回调函数


wordpress add multiple callback function to single ajax action from different plugin

我试图在wordpress ajax操作中再添加一个回调函数

woocommerce_apply_coupon

这个wp_ajax操作是在wooccommerce插件中定义的,我想从我的插件文件中添加我自己的回调函数。

我试过什么-

add_action( 'wp_ajax_nopriv_woocommerce_apply_coupon','darn',999);
add_action( 'wp_ajax_woocommerce_apply_coupon', 'darn',999);
function darn(){
         print_r($_REQUEST);
         exit;
    }

在我的functions.php中这样做甚至没有显示任何错误,就像我看不到这段代码的任何效果一样。

想知道这是否有可能实现。谢谢。

好吧,我想回答我自己的问题,因为似乎没有人回答。

add_action( 'wp_ajax_nopriv_woocommerce_apply_coupon','darn',1);
add_action( 'wp_ajax_woocommerce_apply_coupon', 'darn',1);
function darn(){
         print_r($_REQUEST);
         exit;
    }

通过将优先级设置为1(赋予我的回调函数最高优先级),它实际上起到了作用!

这是未经测试的,但我会尝试在加载所有插件后删除原始操作,然后添加您的替代:

add_action( 'plugins_loaded', 'b5f_new_ajax_coupon', 15 );
function b5f_new_ajax_coupon() 
{
    remove_action( 'wp_ajax_woocommerce_apply_coupon', 'woocommerce_ajax_apply_coupon' );
    remove_action( 'wp_ajax_nopriv_woocommerce_apply_coupon', 'woocommerce_ajax_apply_coupon' );
    add_action( 'wp_ajax_woocommerce_apply_coupon', 'b5f_ajax_apply_coupon' );
    add_action( 'wp_ajax_nopriv_woocommerce_apply_coupon', 'b5f_ajax_apply_coupon' );
}   
function b5f_ajax_apply_coupon()
{
    // COPY THE ORIGINAL /woocommerce/woocommerce-ajax.php#L57
    // AND ADAPT TO YOUR NEEDS
}