Miglior modo per includere wp-config.php in un plugin WordPress
Ci sono valide ragioni per includere wp-config.php. Ad esempio, per plugin che ricevono notifiche da API, un file di callback può includere il file di configurazione per accedere al database. In questo caso, fare in modo che il file di callback venga caricato da Wordpress è una pratica terribile.

Ti sbagli. Questa risposta potrebbe essere vera se stai scrivendo un plugin approssimativo tipo "hello-world", come 'crea una textarea carina nel frontend'. Ma cosa succede se stai sviluppando un software complesso e hai bisogno di test automatici unitari? La mia shell carica un UnitTest all'interno del mio plugin, senza core o funzionalità di Wordpress. Le opzioni variano tra symlink, inclusione con path assoluto o namespace in stile Symfony, ma dovresti modificare il file core

wp-config.php
dovrebbe essere sempre già caricato e non dovrebbe essere necessario includerlo.
Nella maggior parte dei casi, il modo migliore per assicurarsi che $wbdp
sia incluso nelle funzioni del tuo plugin e tema è verificare che i file del tema e del plugin si trovino nella posizione corretta e che il plugin o tema sia attivo.
Se global $wpdb
non è ancora impostato, allora non dovresti aver bisogno di includere alcun file core di WordPress. Molto probabilmente significa che la tua funzione viene eseguita troppo presto e dovresti posizionarla all'interno di un'azione, come muplugins_loaded
, plugins_loaded
, after_setup_theme
, init
o wp_loaded
.
Se hai un file separato che utilizzi per una richiesta ajax, allora dovresti sostituirlo e utilizzare invece gli hook ajax di WordPress.
L'unico caso valido in cui ho trovato necessario includere wp-config.php
è per estendere il comune if ( ! defined( 'ABSPATH' ) ) exit;
, in modo che gli utenti vengano reindirizzati alla home quando tentano di accedere direttamente a qualsiasi file o directory del mio tema o plugin.
<?php
/**
* Il silenzio è d'oro, ma io in realtà voglio che le persone vedano il sito web.
*/
if ( ! defined( 'ABSPATH' ) ) {
// Chiama dirname() 4 volte perché questo file si trova in '/wp-contents/plugins/plugin-dir/' e wp-config.php è in '/'
require_once dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) . '/wp-config.php';
// Redirect permanente alla home.
wp_safe_redirect( home_url(), 301 );
die;
}

Se vuoi accedere solo al file wp-config.php
senza il resto delle funzioni di WordPress.
Segui questi passaggi:
crea un file vuoto
wp-settings.php
nella directory del tuo pluginaggiungi questo al tuo file PHP
define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins/YOUR_PLUGIN_DIR/' ); require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
Funziona perfettamente da WordPress 4.2.4 in su e l'ho testato nel nostro plugin mywebapplets.

Come @Otto ha detto questo non dovrebbe essere fatto.
