Как включить $ wpdb в плагин wordpress?

Я уже некоторое время разрабатываю plugin в wordpress , но одна проблема продолжает прослушивать меня. Я хочу экспортировать таблицу базы данных в качестве файла excel, и поэтому мне нужен доступ к глобальной $wpdb->variable из файла в моем каталоге плагинов.

Я нашел запись в блоге, которая объясняет, какие классы я должен включить, но это не работает (ссылка ниже). Как вы можете видеть, я делаю var_dump , но он никогда не достигает этой точки. Если оставить код wp-config и wp-load из кода, дамп returns NULL , поэтому я предполагаю, что проблема связана с импортом.

Во всяком случае, я надеялся, что кто-то может помочь мне с этой проблемой. Мне не обязательно нужно исправление для моего подхода, мне просто нужен способ экспортировать массив данных (извлеченный из моего db), чтобы преуспеть в wordpress. Любая помощь будет оценена по достоинству. Заранее спасибо.

http://www.notesbit.com/index.php/web-mysql/web-scripts/standalone-access-the-wordpress-database-using-wpdb/

 include_once('../../../wp-config.php'); include_once('../../../wp-load.php'); include_once('../../../wp-includes/wp-db.php'); var_dump($wpdb); $filter = get_where_clause(); $order = get_order_by_clause(); $data = $wpdb->get_results("SELECT * FROM " . $table_prefix . "team_data" . $filter . $order, ARRAY_A); $result = array(); 

EDIT: я не могу включить wp-config , он дает постоянные ошибки. Я знаю, где происходит ошибка, мне просто нужно найти работу. при просмотре страницы wp-settings (которая включена в wp-config) вы найдете эту строку кода:

 foreach ( wp_get_active_and_valid_plugins() as $plugin ) include_once( $plugin ); unset( $plugin ); 

это – то, где есть ошибка. Я просто не знаю, как мне обойти эту ошибку.

EDIT 2: проблема решена. При включении файла я включил wp-config более одного раза (хотя я сказал, что он должен быть включен только один раз). Я решил проблему, используя следующий код.

 global $wpdb, $table_prefix; if(!isset($wpdb)) { require_once('../../../../wp-config.php'); require_once('../../../../wp-includes/wp-db.php'); } 

Если вы создаете плагин WordPress, вам не нужно включать эти файлы вручную.

Если вы хотите экспортировать таблицу, почему бы вам не создать для нее функцию / класс и передать ей $wpdb (если вам это нужно). Вы также можете использовать обычный MySQLi- класс (из PHP), чтобы получить доступ к своей базе данных MySQL.


Если вы просто хотите получить доступ к базе данных MySQL с сохраненными значениями входа, которые используются WordPress, вы можете включить wp_config из корневого каталога WordPress. В нем есть некоторые (самоочевидные) глобальные поля, которые вы могли бы использовать для подключения к вашей базе данных:

 include "WP-ROOT-PATH/wp-config.php"; $db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // Test the connection: if (mysqli_connect_errno()){ // Connection Error exit("Couldn't connect to the database: ".mysqli_connect_error()); } 

После этого у вас есть экземпляр MySQLi-класса (как упоминалось выше), который вы можете использовать для доступа к своей базе данных.

Я, однако, не уверен, что это идеальный способ, но он работает.


Чтобы отладить WordPress (если что-то не работает и нет сообщения об ошибке), вы должны активировать отладку в wp-config.php :

 /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. */ define('WP_DEBUG', true); 

Кроме того, если вы тестируете свои PHP-скрипты на локальном сервере, вы должны включить display_error в файл php.ini :

 ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. display_errors = On 

Однако это должно быть сделано только на локальном тестовом сервере, а не в продуктивном сценарии.