2

我试图在 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中这样做甚至没有显示任何错误,就像我看不到这段代码的任何效果一样。

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

4

2 回答 2

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
}
于 2013-08-22T12:40:51.500 回答
1

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

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

于 2013-08-22T12:47:11.980 回答