Лучший способ подключения wp-config.php в плагине WordPress
Есть веские причины включать wp-config.php. Например, для плагинов, которые получают уведомления от API, файл обратного вызова может включать конфигурационный файл для доступа к базе данных. В этом случае загрузка файла обратного вызова через WordPress — это ужасная практика.

Вы ошибаетесь. Этот ответ может быть верен, если вы пишете какой-то недоделанный hello-world плагин вроде 'создания красивого текстового поля на фронтенде'. Но что если вы действительно разрабатываете большое программное обеспечение и вам нужны автоматические Unit-тесты? Моя оболочка загружает UnitTest внутри моего плагина без ядра WordPress или его функционала. Варианты варьируются от симлинков, абсолютных путей включения до пространств имен в стиле Symfony, но вам придется модифицировать core-файл.

Файл wp-config.php
должен быть уже загружен, и его не нужно подключать дополнительно.
В большинстве случаев лучший способ убедиться, что переменная $wpdb
доступна в функциях вашего плагина или темы — это разместить файлы плагина или темы в правильном месте и убедиться, что они активны.
Если переменная global $wpdb
еще не определена, это означает, что ваша функция выполняется слишком рано. В таком случае её следует поместить в один из хуков, например muplugins_loaded
, plugins_loaded
, after_setup_theme
, init
или wp_loaded
.
Если у вас есть отдельный файл, например, для AJAX-запросов, лучше использовать стандартные хуки WordPress для AJAX, а не подключать файлы вручную.
Единственный допустимый случай, когда может потребоваться подключение wp-config.php
, — это расширение стандартной проверки if ( ! defined( 'ABSPATH' ) ) exit;
, чтобы перенаправлять пользователей на главную страницу при попытке прямого доступа к файлам или директориям темы или плагина.
<?php
/**
* Тишина — золото, но я хочу, чтобы люди видели сайт.
*/
if ( ! defined( 'ABSPATH' ) ) {
// Вызываем dirname() 4 раза, так как этот файл находится в '/wp-contents/plugins/plugin-dir/', а wp-config.php — в корне '/'
require_once dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) . '/wp-config.php';
// Постоянное перенаправление на главную.
wp_safe_redirect( home_url(), 301 );
die;
}

Если вам нужен доступ только к файлу wp-config.php
без остальных функций WordPress.
Выполните следующие шаги:
Создайте пустой файл
wp-settings.php
в директории вашего плагинаДобавьте этот код в ваш PHP файл
define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins/YOUR_PLUGIN_DIR/' ); require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
Это отлично работает для WordPress 4.2.4 и выше, я тестировал это в нашем собственном плагине mywebapplets.

Как сказал @Otto, так делать не следует.
