Как включить $wpdb в плагин wordpress?
Я уже некоторое время разрабатываю plugin
в wordpress
, но одна проблема продолжает беспокоить меня. Я хочу экспортировать таблицу базы данных в виде файла excel, и для этого мне нужен доступ к глобальному $wpdb->variable
из файла в каталоге моего плагина.
Я нашел запись в блоге, в которой объясняется, какие классы я должен включить, но это не работает (ссылка ниже). Как вы можете видеть, я делаю var_dump
, но это никогда не доходит до этой точки. Если я оставлю включения wp-config
и wp-load
вне кода, дамп returns NULL
, так что я предполагаю, что есть проблема с импортом.
В любом случае, я надеялся, что кто-нибудь сможет помочь мне с этой проблемой. Мне не обязательно нужно исправление для моего подхода, мне просто нужен способ экспортировать массив данных (извлеченных из моей базы данных) в excel в wordpress. Любая помощь будет признательна. Заранее благодарю.
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();
РЕДАКТИРОВАТЬ:
Я не может включать wp-config
, это приводит к постоянным ошибкам. Я знаю, где происходит ошибка, мне просто нужно найти обходной путь. при просмотре страницы wp-settings
(которая включена в wp-конфигурацию) вы найдете следующую строку кода:
foreach ( wp_get_active_and_valid_plugins() as $plugin )
include_once( $plugin );
unset( $plugin );
Вот где есть ошибка. Я просто не знаю, как мне обойти эту ошибку.
ПРАВКА 2:
Проблема решена. При включении файла я включал wp-config
несколько раз (хотя я и заявил, что он должен быть включен только один время). Я решил проблему, используя следующий код.
global $wpdb, $table_prefix;
if(!isset($wpdb))
{
require_once('../../../../wp-config.php');
require_once('../../../../wp-includes/wp-db.php');
}
1 answers
Если вы создаете плагин 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
в on
в вашем 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
Однако это должно быть сделано только на вашем локальном тестовом сервере, а не в производительном сценарии.