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

时间:2013-08-22 08:35:11

标签: php wordpress jquery wordpress-plugin

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

woocommerce_apply_coupon

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

我尝试了什么 -

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中执行此操作甚至没有显示任何错误,就像我看不到此代码的任何影响。

想知道这是否有可能实现。三江源。

2 个答案:

答案 0 :(得分:0)

这是未经测试的,但我会尝试解决此问题,在加载所有插件后删除原来的操作,然后添加替代品:

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
}

答案 1 :(得分:0)

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

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(将我的回调函数作为最高优先级)它实际上有效!