Wp_ajax_nopriv_xxx不是在一个站点上运行,而是在所有其他站点上运行。-1用于已注销的用户

时间:2011-07-05 作者:CommentLuv

我的插件使用add\\u操作wp_ajax_cl_ajaxwp_ajax_nopriv_cl_ajax 在它的代码和数千个使用它的站点上,这很好,但有一个站点不适合注销的用户

登录的用户很好,代码向ajax发送请求,所有内容都会很好地返回。

在其他博客上,注销用户也可以,但就在这一个博客上,ajax请求返回了a-1。

我已经在插件中添加了调试代码,以便在do\\u ajax函数中使用一条消息,但它甚至没有到达该函数。

以下是注销用户ajax的操作add_action(\'wp_ajax_nopriv_cl_ajax\',\'do_ajax\');

该函数具有以下功能

function do_ajax(){
    if(isset($_REQUEST[\'debug\'])){
      die(\'in ajax function\');
   }
}
我只是将ajax url更改为有一个用于调试的变量(....../wp admin/admin ajax.php?debug=true),在我的测试站点上,它会终止,对于登录用户,它终止,但对于注销用户,它只返回-1,它告诉我操作甚至没有被触发。我向函数中添加了更多调试代码,该函数为has_filter 它返回1,因此我知道操作已添加,只是没有触发。

我试过改变主题,但没有乐趣

现场正在使用wp 3.2

有没有人有过wp\\U ajax\\U nopriv\\U xxx不开火的经验?是什么原因让你这么做的?

正如我所说,它在其他博客上运行良好,因此我知道这不是一个打字错误或代码缺失的情况。

我还可以做些什么来确定是什么原因导致行动无法启动?

2 个回复
SO网友:Rarst

根据admin-ajax.php:

if ( !empty( $_REQUEST[\'action\'] ) )
    do_action( \'wp_ajax_nopriv_\' . $_REQUEST[\'action\'] );
因此,可能的原因是:

脚本未正确传递操作名称(如果登录用户使用的代码完全相同,则不太可能)admin_init 并将所有$_REQUEST.

SO网友:Roman

我不认为你的wp_ajax_nopriv 操作未正确注册。刚刚从admin-ajax.php. 我在wp_ajax 返回的操作处理程序-1 对于用户角色contributer.

问题是,我在上限制了此用户组对管理后端的访问admin_init 动作钩。正如你在admin-ajax.php 该钩子将在前几行中调用,因此请求被拒绝。

可能您有类似的问题,或者激活了一些奇特的插件,这些插件会在代码中的某个点产生干扰。

如果无法再现错误,请尝试通过admin-ajax.php 逐步归档和替换全部-1 返回带有您自己的错误消息的值。这有点麻烦,但会让你找到原因。

结束

相关推荐

AJAX和指向php页面的路径有问题

我想从Ajax方法调用php页面:警报工作正常,代码也在wordpress之外经过测试,但这里似乎从未调用过php页面。我找到了一些文章,其中包括:How to manage ajax calls and JSON in wordpress但我更困惑了。你能告诉我在这里该怎么办吗?(对于“diapo.php”来说,它不起作用,而且也是这样)以下是jquery的调用: $(\'.sous-cat\').find(\'img\').click(function(){