La mejor forma de incluir wp-config.php en WordPress
Hay razones válidas para incluir wp-config.php. Por ejemplo, para plugins que reciben notificaciones de APIs, un archivo de callback puede incluir el archivo de configuración para acceder a la base de datos. En este caso, hacer que el archivo de callback sea cargado desde WordPress es una pésima práctica.

Estás equivocado. Esta respuesta quizás sea cierta si escribes un plugin básico de ejemplo como 'crear un área de texto bonita en el frontend'. ¿Pero qué pasa si realmente desarrollas un software grande y necesitas tener Pruebas Unitarias automáticas? Mi shell carga una Prueba Unitaria dentro de mi Plugin, sin el núcleo de WordPress ni su funcionalidad. Las opciones varían entre enlaces simbólicos, inclusión de rutas absolutas o namespaces al estilo Symfony, pero tendrías que modificar el archivo principal.

wp-config.php
siempre debería estar ya cargado y no debería necesitar ser incluido.
En la mayoría de los casos, la mejor manera de asegurarse de que $wbdp
esté incluido en tus funciones de plugins y temas es asegurarse de que los archivos de tu tema y plugin estén en la ubicación correcta y que tu plugin o tema esté activo.
Si global $wpdb
aún no está definido, entonces no deberías necesitar incluir ningún archivo núcleo de WordPress. Lo más probable es que tu función se esté ejecutando demasiado pronto, y deberías colocarla dentro de una acción, como muplugins_loaded
, plugins_loaded
, after_setup_theme
, init
o wp_loaded
.
Si tienes un archivo separado que usas como una solicitud ajax, entonces deberías cambiarlo y usar los hooks de ajax de WordPress en su lugar.
El único momento válido que he encontrado para incluir wp-config.php
es para expandir el común if ( ! defined( 'ABSPATH' ) ) exit;
, de modo que los usuarios sean redirigidos a la página de inicio cuando intenten acceder directamente a cualquiera de los archivos o directorios de mi tema o plugin.
<?php
/**
* El silencio es oro, pero en realidad quiero que la gente vea el sitio web.
*/
if ( ! defined( 'ABSPATH' ) ) {
// Llamar a dirname() 4 veces ya que este archivo está en '/wp-contents/plugins/plugin-dir/' y wp-config.php está en '/'
require_once dirname( dirname( dirname( dirname( __FILE__ ) ) ) . '/wp-config.php';
// Redirección permanente a la página de inicio.
wp_safe_redirect( home_url(), 301 );
die;
}

Si solo deseas acceder a wp-config.php
sin el resto de las funciones de WordPress.
Sigue estos pasos:
Crea un archivo
wp-settings.php
vacío en el directorio de tu pluginAñade esto a tu archivo PHP
define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins/YOUR_PLUGIN_DIR/' ); require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
Esto funciona perfectamente para WordPress 4.2.4 "hacia abajo y hacia arriba" y lo he probado en nuestro propio plugin mywebapplets.

Como @Otto dijo, esto no debería hacerse.
