Cea mai bună metodă de a include wp-config.php
Există motive valide pentru a include wp-config.php. De exemplu, pentru plugin-uri care primesc notificări de la API-uri, un fișier de callback poate include fișierul de configurare pentru a accesa baza de date. În acest caz, încărcarea fișierului de callback din Wordpress este o practică proastă.

Greșești. Acest răspuns poate fi adevărat dacă scrii un plugin simplist de tip 'hello-world' gen 'creează un textarea frumos pe frontend'. Dar dacă scrii de fapt un software complex și ai nevoie de teste Unitate automate? Shell-ul meu încarcă un UnitTest în interiorul Plugin-ului meu, fără a folosi nucleul sau funcționalitățile Wordpress. Opțiunile variază între symlinking, includere cu cale absolută sau namespace-uri în stil Symfony, dar ar trebui să modifici fișierul de bază.

Fișierul wp-config.php
ar trebui să fie deja încărcat și nu ar trebui să fie necesar să-l includeți.
În majoritatea cazurilor, cea mai bună modalitate de a vă asigura că $wpdb
este inclus în funcțiile din plugin-ul sau tema dvs. este să vă asigurați că fișierele temei sau plugin-ului se află în locația corectă și că plugin-ul sau tema este activă.
Dacă global $wpdb
nu este încă setat, atunci nu ar trebui să fie nevoie să includeți orice fișiere de bază din WordPress. Cel mai probabil, aceasta înseamnă că funcția dvs. este declanșată prea devreme și ar trebui să o plasați în interiorul unei acțiuni, cum ar fi muplugins_loaded
, plugins_loaded
, after_setup_theme
, init
sau wp_loaded
.
Dacă aveți un fișier separat pe care îl utilizați pentru o cerere ajax, atunci ar trebui să-l înlocuiți și să utilizați în schimb cârligele ajax din WordPress.
Singura situație validă în care am găsit necesar să includ wp-config.php
este pentru a extinde condiția comună if ( ! defined( 'ABSPATH' ) ) exit;
, astfel încât utilizatorii să fie redirecționați către pagina principală atunci când încearcă să acceseze direct oricare dintre fișierele sau directoarele temei sau plugin-ului meu.
<?php
/**
* Tăcerea este de aur, dar eu de fapt vreau ca oamenii să vizualizeze site-ul.
*/
if ( ! defined( 'ABSPATH' ) ) {
// Apelăm dirname() de 4 ori, deoarece acest fișier se află în '/wp-contents/plugins/plugin-dir/' iar wp-config.php se află în '/'
require_once dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) . '/wp-config.php';
// Redirecționare permanentă către pagina principală.
wp_safe_redirect( home_url(), 301 );
die;
}

Dacă dorești acces doar la wp-config.php
fără restul funcțiilor WordPress.
Urmează acești pași:
creează un fișier gol
wp-settings.php
în directorul tău de pluginadaugă acest cod în fișierul tău PHP
define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins/YOUR_PLUGIN_DIR/' ); require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
Această metodă funcționează perfect pentru WordPress 4.2.4 "în jos și în sus" și am testat-o în propriul nostru plugin mywebapplets.

După cum @Otto a menționat, acest lucru nu ar trebui făcut.
