从admin-ajax.php调用admin-ajax.php

时间:2013-04-16 作者:Ewout

我正在编写一个插件,它调用另一个插件的ajax的输出,设置在wp_ajax_

我会直接调用这些函数,但插件中的限制使其成为非选项。

要明确的是,发生了这样的事情:

用户选择一个动作,然后点击apply,我的插件函数在admin ajax中调用。php(通过wp_ajax_ 钩子)插件函数创建一个非编码url,如下所示:$url = wp_nonce_url( admin_url( \'admin-ajax.php?action=plugin_action&post_id=\' . $post_id), \'plugin_action\' );wp_remote_get0.

现在奇怪的是:不是用wp_remote_get 我回显了它,然后复制粘贴到我的浏览器中,它给了我正确的输出。(so it\'s not a matter of a missing die()!)

我还尝试将自己的函数放入编辑中。php(使用load- hook)而不是admin ajax。php,但结果是相同的(0)。现在法典显示the load- hook is executed before wp_ajax, 因此,这是预期的行为(操作尚未添加),但即使在优先级为99的wp\\U ajax中,我也能得到0.

有什么想法吗?当我直接从admin ajax调用该操作时,是否还没有添加该操作。php?如果是的话,有没有更好的地方让我自己采取行动?(在wp\\u ajax之后激发的)

1 个回复
SO网友:Otto

您的服务器是否知道自己的名称和/或是否允许环回连接?

比如,如果你只在主博客页面上进行远程访问,那么这是否有效?

如果由于DNS无法解析,服务器不知道自己的名称,或者在服务器级别禁用了环回连接(这些是一些廉价主机上常见的“安全”措施),那么连接回自己将不起作用。

编辑:好吧,如果不是这样的话,那么你有没有尝试连接到wp_ajax_nopriv_ 钩由于您没有使用wp\\u remote\\u get传递cookie或任何形式的凭据,因此您将作为非特权用户进行连接,这意味着它将使用nopriv钩子而不是普通的特权钩子。

结束

相关推荐

通过AJAX将表单数据发布到设置API是否安全?我是不是遗漏了什么?

在我的Wordpress管理员中,我使用设置API设置了主题选项。我正在尝试使用Ajax保存主题选项表单,以便页面不会刷新。我只需要添加以下jQuery代码:$(\"#cgform\").submit(function() { var form_data = $(\'#cgform input\').serializeArray(); $.post( \'options.php\', form_data ).error(function() {