WordPress wpdb неопределенная переменная - PullRequest
9 голосов
/ 01 февраля 2011

Я пишу плагин и пытаюсь запросить некоторые данные из пользовательской таблицы в моей базе данных, используя:

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

но просто получите ошибку Неопределенная переменная: wpdb

Есть идеи, почему это не работает? Я следил за документами и искал Google, но не повезло. Все еще довольно новый для плагинов WP, так что, вероятно, что-то очевидное.

Спасибо!

Ответы [ 2 ]

32 голосов
/ 01 февраля 2011

Мне нужно было использовать global $wpdb; в моей функции.

2 голосов
/ 12 ноября 2015

Одно примечание для добавления: вы не можете использовать 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 () {
            ...
        }
}

Потому что global нельзя использовать непосредственно внутри класса. Аналогично, простая ссылка $wpdb внутри класса также дает вам ошибку, потому что объект не знает, что такое $wpdb. Вы должны объявить $wpdb как global внутри функции, которая находится внутри вашего класса.

например. Это работает просто отлично:

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

... и поскольку $wpdb было объявлено global внутри функции внутри класса, вы можете использовать его.

...