Как включить $ wpdb в плагин WordPress? - PullRequest
6 голосов
/ 02 июня 2011

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

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

В любом случае, я надеялся, что кто-нибудь сможет мне помочь с этой проблемой. Мне не обязательно нужно исправление для моего подхода, мне просто нужен способ экспортировать массив данных (извлеченный из моей базы данных), чтобы преуспеть в 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 );

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

РЕДАКТИРОВАТЬ 2: Задача решена. При включении файла я включал wp-config более одного раза (хотя я заявлял, что он должен быть включен только один раз). Я решил проблему с помощью следующего кода.

global $wpdb, $table_prefix;

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

1 Ответ

11 голосов
/ 02 июня 2011

Если вы создаете плагин для 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...