更新我使用以下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控制台检查加载的代码/强制加载的代码如何使用PHP控制台查看哪些钩子上注册了哪些操作
最合适的回答,由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\');