Wordpress wpdb未定义变量

log*_*nit 9 wordpress wordpress-plugin

我正在编写一个插件并尝试使用以下命令从我的数据库中的自定义表中请求一些数据:

$current_text = $wpdb->get_results("SELECT text FROM addtext ORDER BY id DESC LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

但只是得到错误未定义变量:wpdb

知道为什么这不起作用吗?我跟着博客跟踪谷歌,没有运气.WP插件还是一个新手,所以可能是显而易见的.

谢谢!

log*_*nit 36

我需要global $wpdb;在我的功能中使用.

  • 2.5年后,你的回答对我有所帮助.谢谢! (6认同)
  • 3年后,你的回答也帮助了我.谢谢! (3认同)
  • 4年后,你的答案又来了!谢谢! (2认同)
  • 5年后,你的回答又来了!谢谢! (2认同)
  • 9年后,你的回答再次做到了!谢谢! (2认同)
  • 10年后,你的回答再次做到了!谢谢! (2认同)

Ral*_*ama 5

需要补充的一点是:您不能global在类中使用,当然您必须使用global才能让您的对象使用$wpdb.

虽然您不能在类内global 立即使用,但您必须在类内的函数内声明$wpdb为,这确实有效。global

例如这会给你一个错误:

class wpdb_test {
        global $wpdb; // can't use global as a direct 'child' of a class
        public function __construct () {
            ...
        }
}
Run Code Online (Sandbox Code Playgroud)

因为global不能直接在类内部使用。同样,简单地$wpdb在类内部引用也会给您一个错误,因为该对象不知道是什么$wpdb。您必须从类内的函数内部声明$wpdbglobal

例如这很好用:

class wpdb_test {
        public $variable_name;
        public function __construct () {
            global $wpdb; // safe to use because it's inside a function
            ...
        }
}
Run Code Online (Sandbox Code Playgroud)

...并且因为$wpdbglobal内的函数声明,所以您可以使用它。