无法访问$wpdb,返回空

时间:2018-01-08 作者:Soilborn

我正在使用Wordpress插件样板开发一个相当简单的插件。利用AJAX,我设置了一个基于按钮按下的操作,该操作应该从我设置的自定义数据库表中删除一个项。AJAX工作,按钮工作,对操作PHP文件的调用工作。该调用位于我的插件的admin partials文件夹中,大多数插件操作都发生在该文件夹中,看起来是这样的(“txtHint”是我使用的教程的一个工件):

function ajax_function(str) {
 var parsed = str.slice(19);
 var xmlhttp = new XMLHttpRequest();
 xmlhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
     document.getElementById("txtHint").innerHTML = this.responseText;
   }
 };
 xmlhttp.open("GET", "http://" + window.location.hostname + "/wp-content/plugins/plugin_name/admin/partials/trigger_file.php?q=" + parsed, true);
 xmlhttp.send();
}
然而,当我进入操作PHP文件(位于同一目录中)时,应该在其中进行一些简单的数据库操作,但什么都没有发生。此时的文件包括:

global $wpdb;
$table_name[\'database_name\'] = $wpdb->prefix . \'database_name\';
echo var_dump($wpdb);
echo var_dump($table_name);
echo var_dump($wpdb->prefix);
现在就是这样。这些var转储返回为“NULL”、“database\\u name”和“NULL”

我做错了什么?在这个项目涉及的其他几个文件中,一切都很好。我打破了什么?如果它是AJAX的东西,而Wordpress对AJAX的处理方式不同,那么我很想看到一个很好的教程,因为我发现很少有人明确地处理Wordpress AJAX已经过时和/或损坏了。

顺便说一下,这是我的第一个插件,我对PHP、Javascript以及整个9码都非常陌生。请,如果能为我简化一下回答,那将非常有帮助。

1 个回复
SO网友:HU ist Sebastian

正如注释中所述,不要直接访问插件文件。相反,可以使用其他方法将RESTAPI或包含在Wordpress中的Ajax功能合并到一起。要了解如何在插件中使用Ajax,请查看以下内容:Ajax in Plugins

结束

相关推荐

基于Archive.php中特定自定义分类术语的数量的条件

我在努力寻找计数的方法and conditionally apply // do stuff 基于存档中特定分类法(ABC)的术语数量。php。。。我所拥有的只是下面的这些,但它计算了整个网站的所有条款。我希望它只计算存档中不同术语的数量。php并基于计数应用条件。<?php echo \'There are \' . wp_count_terms( \'state\', array( \'hide_empty\' => false ) ) . \' terms in the taxonomy