2

这是我的问题的“长话短说”版本:
我有这个触发 wp-admin/admin-ajax.php 文件的时事通讯/订阅表单,但是当我没有登录到 Wordpress 时该表单不起作用。
原来,admin-ajax.php 文件有一个 302 反对它。

我已经看到/测试过这个问题的先前解决方案(即这个那个),但是它们都没有帮助。

我在整个主题文件中搜索了任何相关的“wp-admin”保护,但没有找到任何东西。
我修改并停用了 WP Better Security 和 W3C(以及其他各种插件),没有任何改变。
我更改/删除了 htaccess,没有任何改变。

我对这个问题有点沮丧。
在这一点上,我知道我的代码中的某个地方阻止了“局外人”对 admin-ajax.php 的访问,但是我不知道在哪里。
它要么是保护我的管理文件夹的东西,要么是保护 admin-ajax.php 的东西。

有任何想法吗?
帮助将不胜感激。
提前致谢!

4

1 回答 1

0

好的,这里的问题是 Wordpress 对 ajax 使用了两个不同的钩子。它使用一个用于管理端,一个用于注销用户。我的猜测是您的表单没有使用后者。

看看这两个:

add_action('wp_ajax_my_action', 'my_action_callback');
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');

来自 Wordpress 法典:

从 WordPress 2.8 开始,有一个类似于 wp_ajax_(action) 的钩子:

wp_ajax_nopriv_(action) 为未登录的用户执行。因此,如果您希望它在前端为访问者和登录用户触发,您可以这样做:

add_action('wp_ajax_my_action', 'my_action_callback'); add_action('wp_ajax_nopriv_my_action', 'my_action_callback');

见这里:http ://codex.wordpress.org/AJAX_in_Plugins

于 2013-09-21T03:20:27.420 回答