无法访问$ wpdb,返回NULL

时间:2018-01-05 19:33:07

标签: javascript php html ajax wordpress

我正在使用Wordpress Plugin Boilerplate开发一个相当简单的插件。利用AJAX,我设置了一个基于按钮按下的动作,它应该从我设置的自定义数据库表中删除一个项目。 AJAX工作,按钮工作,对操作PHP文件的调用工作。

然而,当我到达操作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_name”和“NULL”。

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

1 个答案:

答案 0 :(得分:0)

这意味着即使在wordpress可以初始化它之前你正在调用$wpdb,或者你正在做更奇怪的事情

可以这样做,

jquery的

$('body').on('click', '.some-click-handler', function() {
    $.ajax({
      type: 'POST',
      url: ajaxurl,
      data: {'action':'test_ajax'},
      success: function(data) {
          console.log(data);
      },
      error: function(errorThrown) {
        console.log(errorThrown);
      },
    });
});

你的php ajax处理程序,虽然你应该添加更多安全性,如nonce

//wp_ajax_nopriv for non logged-in user
add_action('wp_ajax_test_ajax', function() {
    global $wpdb;
    wp_send_json( $wpdb );
});

checkout wordpress ajax docs https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)