Miglior modo per includere wp-config.php in un plugin WordPress

28 ago 2014, 00:33:43
Visualizzazioni: 13.8K
Voti: -6

Mi chiedevo quale sia il modo migliore per includere wp-config.php in un plugin. Ho letto che i percorsi relativi potrebbero fallire se i file del plugin si trovano in una posizione diversa.

3
Commenti

Stai effettivamente parlando di un plugin WordPress o stai cercando di caricare WordPress da un file esterno?

Andrew Bartel Andrew Bartel
28 ago 2014 01:08:23

Se modifichi la tua domanda per renderla più specifica al tuo problema effettivo, potresti ottenere risposte migliori.

Otto Otto
28 ago 2014 01:09:34

Ho avuto problemi usando $wpdb nel mio plugin, ho visto un esempio che usava include wp-config. Proverò di nuovo con $wpdb

stijn.aerts stijn.aerts
28 ago 2014 01:14:24
Tutte le risposte alla domanda 3
2

Il modo migliore è non farlo. Non c'è alcun bisogno che un file di un plugin includa mai il wp-config.php.

Lo stai facendo al contrario. WordPress carica i plugin. I plugin non caricano WordPress.

28 ago 2014 00:50:38
Commenti

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.

ethmz ethmz
25 giu 2018 14:34:23

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

clockw0rk clockw0rk
9 lug 2021 01:59:55
0

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;
}
24 nov 2017 07:35:28
2
-4

Se vuoi accedere solo al file wp-config.php senza il resto delle funzioni di WordPress.

Segui questi passaggi:

  1. crea un file vuoto wp-settings.php nella directory del tuo plugin

  2. aggiungi 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.

13 ago 2015 13:37:14
Commenti

Come @Otto ha detto questo non dovrebbe essere fatto.

Nicolai Grossherr Nicolai Grossherr
13 ago 2015 13:45:44

In realtà non è un brutto inizio, ma non funzionerà con WordPress installato in una sottodirectory.

xjlin0 xjlin0
25 lug 2021 18:56:01