WordPress Ajax Problems

时间:2013-01-21 作者:Gordon Guthrie

更新我使用以下curl命令启动它:curl -H "Accept: application/json" -X POST http://localhost/wordpress/wp-admin/admin-ajax.php -d "action=vixo_wordpress_signon&data=banjometer" --trace -

不太确定如何让它接受json,但嘿。。。

最初的问题是,我是WordPress的新手,在使用Ajax时遇到了一些问题,但在理解WordPress如何加载PHP时也遇到了一些问题。

我有一个插件文件:

/usr/share/wordpress/wp-content/plugins/myplugin.php
其中包含以下代码:

// set up the ajax calls
add_action(\'wp_ajax_my_ajax\', \'my_ajax\');
add_action(\'wp_ajax_nopriv_my_ajax\', \'my_ajax\');  

function my_ajax () {
    debug_log ("My ajax fired...");
    echo "banjolalia...";
    die ();
}
我想演示ajax是使用Curl启动的:

curl -X POST http://localhost/wordpress/wp-admin/admin-ajax.php -d \'{"action":"my_ajax","data":"banjometer"}\' --trace -
(主页位于http://localhost/wordpress)

我期待着卷曲的回归banjolalia 并在调试日志中显示一行。

我看到的是函数返回0

Ajax是独立的,因为我正在编写单点登录代码,我需要子服务来查询WordPress并查看用户是否登录。

因为我是WordPress/PHP新手,所以我没有一个健壮的开发周期。

我(试图)重新加载代码的方法是在管理页面上停用/激活插件。这似乎不起作用。我不确定我的更改是否加载到WordPress中,所以我实际上关闭并再次打开了lappie,但Ajax仍然没有启动。

我安装了2个调试插件:

从开发人员的角度来看,我遇到的问题有:

如何使用PHP控制台检查加载的代码/强制加载的代码

2 个回复
最合适的回答,由SO网友:Fabien Quatravaux 整理而成

对于在Wordpress中“加载”修改过的php代码,您没有具体的操作。所有文件在执行时都按原样加载(即当服务器处理HTTP请求时)。您只需验证插件是否处于活动状态。

您的curl命令格式不正确。请改用此选项:

curl -X POST http://localhost/wordpress/wp-admin/admin-ajax.php -d action=my_ajax -d data=banjometer --trace -
但是CURL并不是最容易使用的调试工具。当我需要在Wordpress中快速简便地执行一些调试php代码时,我会使用插件激活挂钩:

<?php

register_activation_hook(__FILE__, \'my_plugin_debug\'); 
function my_plugin_debug() {

    $log = \'banjometer\';

    die("OK, $log");
}

?>
制作一个只包含此代码的新插件,然后尝试在后端激活它。您将得到一个错误(因为die 语句),因此插件将不会被激活,但您的代码将被运行,您可以在错误消息中看到日志。

SO网友:helgatheviking

我对CURL一无所知,但看看admin ajax。php由于没有设置任何操作,所以在文件的开头会得到一个0,或者由于找不到匹配的操作,所以在文件的结尾会得到一个0。也许您执行CURL命令太早了?在ajax回调有机会被识别之前?如果您在本地安装,可以调整admin ajax中的错误代码。php来告诉您它在哪一点上失败了。别忘了把它放回去,否则你会把头发拔出来的。(已完成)

刚刚注意到侧边栏中的类似问题,我怀疑这就是答案:https://wordpress.stackexchange.com/a/70407/6477

Editcodex确认插件文件在wp_ajax_ 那么,在以后的操作中尝试运行代码怎么样?

function wpa82473(){
  curl -X POST http://localhost/wordpress/wp-admin/admin-ajax.php -d \'{"action":"my_ajax","data":"banjometer"}\' --trace -
}
add_action(\'init\', \'wpa82473\');

结束

相关推荐

允许对管理员以外的其他角色进行AJAX调用

在我的网站上,注册用户(订阅者角色)可以发送草稿,如果管理员对草稿进行验证,则可以发布草稿。我正在尝试将标签框添加到用于发送新帖子的前端编辑器。为了实现自动完成功能,我对这个URL进行了AJAX调用:http://example.com/wp-admin/admin-ajax.php?action=ajax-tag-search&tax=post_tag 这对管理员用户很有用,但对订阅者不起作用。有没有人知道不打电话就可以做到这一点admin-ajax.php?