【问题标题】:Cannot access $wpdb, comes back NULL无法访问 $wpdb,返回 NULL
【发布时间】:2018-01-06 05:13:14
【问题描述】:

我正在使用 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 已经过时和/或损坏。

【问题讨论】:

标签: javascript php html ajax wordpress


【解决方案1】:

这意味着你甚至在 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 );
});

查看 wordpress ajax 文档https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多