我想解决这个问题,因为我正在将ajax请求从插件页面发送到另一个文件verifyapi。php,但它给了我如下错误。
Fatal error: Uncaught Error: Call to undefined function get_option() in verifyapi.php
但在添加以下行时
require_once(\'../../../../../wp-config.php\');
在verifyapi之上。php它工作得很好,但我不想要它,因为WordPress不允许您在函数中添加任何WordPress核心文件,所以是否有其他方法可以做到这一点。
这是管理ui的js代码。将数据发送到verifyapi的php页面。然后从中获得响应。
function savedata()
{
var keyflag=document.getElementById("key_box_flag").value;
if(keyflag=1)
{
var key=document.getElementById("key_box").value;
jQuery.ajax({
url:"<?php echo plugins_url( \'/\', __FILE__ ); ?>verifyapi.php",
type:"POST",
async:true,
data:{"key":key,
"save":1 },
success: function(data)
{
location.reload();
}
});
}
else {
}
}
最合适的回答,由SO网友:Johansson 整理而成
与其这样做,只需在verifyapi.php
然后使用以下命令将其包含在插件的主文件中:
require_once(\'verifyapi.php\');
这样,您就可以访问
verifyapi.php
文件
现在,在你的verifyapi.php
文件,创建一个Ajax处理程序(但我建议使用REST端点):
add_action(\'wp_ajax_your_\', \'handler_function\');
add_action(\'wp_ajax_nopriv_your_handler_name\', \'handler_function\');
function photogram_ajax_handler() {
// Your verification here
}
到目前为止还不错。最后一步是将URL更改为
admin-ajax.php
. 为此,请使用以下方法:
...
url:"<?php echo site_url(\'/wp-admin/admin-ajax.php\'); ?>",
...
一切就绪。