为wp_ajax_添加回调函数不起作用

时间:2013-08-22 作者:Prince Singh

我试图在WordPress AJAX操作中再添加一个回调函数woocommerce_apply_coupon.

这个动作是在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 个回复
最合适的回答,由SO网友:Michal Mau 整理而成

对这是可能的,而且你走在了正确的轨道上!:)

AJAX calls happen "behind the scenes" 无论您选择什么,在该过程中都不会生成屏幕输出echoprint_r - 这就是为什么您看不到返回给您的任何内容——相反,服务器响应由javascript捕获并在那里执行操作。

这为调试AJAX操作提供了两个基本选项:

1) You can use error_log() in your AJAX actions to write the output to WP_DEBUG_LOG file and check the results there:

function darn(){
     error_log( print_r($_POST, 1) );
     exit;
}
有关更多详细信息,请参阅Codex: Debugging_in_WordPress - WP_DEBUG_LOG

Pro提示#1:启动终端控制台并使用tail -f debug.log 用于实时调试awesomness;)

Pro提示#2:使用tail -f debug.log | grep -v \'bad-plugin\' 从不使用的插件作者那里过滤掉过多的调试问题WP_DEBUG_LOG ;P

2) Use javascript\'s own console.log() to check the response right in your browser:

从AJAX操作发送响应。。。

function darn(){
    echo \'darn!\'
    exit;
}
。。。并通过JS接收:

$.post(ajaxurl, data, function(response) {
    // Response will be \'darn!\'
    if( typeof(console) == \'object\' ) console.log( response );
});
专业提示3:您可以使用wp_send_json() 用于生成JSON格式的响应或WP_Ajax_Response XML类。方便更复杂的响应和/或错误处理

专业提示#4:如果有什么不清楚的地方,请在评论中告诉我:D

欢迎光临,祝您在WPSE上玩得愉快!

SO网友:Otto

如果先挂接其他处理程序代码并调用exit() 同样,脚本也会结束,因此您的代码永远不会运行。

检查其他处理程序。

结束

相关推荐

媒体库在添加到帖子时不显示图像(但通过AJAX检索图像信息)

将图像上载到帖子/页面时,媒体库不会显示任何图像(如果有),然后在尝试上载时“失败”(尽管图像实际上已上载)。我已经检查了文件权限(所有内容都由具有完全和适当访问权限的服务器所有;我已经尝试将其设置为777),并且停用了所有插件并尝试切换主题。这些都没有帮助。即使2013年处于活动状态,也会发生这种情况。奇怪的是,我可以在inspector中看到ajax请求,它正在检索有关图像的所有信息(从wp-admin/admin-ajax.php 请求),在data 对象所以wordpress应该知道它在那里。。。