Il file wp-config.php
permette di migliorare le performance e la sicurezza dell'istallazione nonché di personalizzare alcuni aspetti avanzati del funzionamento del CMS.
URL del sito e URL di WordPress
I valori delle URL del sito e dell'istallazione vengono normalmente registrati nella tabella wp_options
del database. Qualora siano dichiarate nel file wp-config.php
, le due costanti WP_SITEURL
e WP_HOME
hanno precedenza sui parametri presenti nel database. Esse vengono dichiarate come segue:
define( 'WP_SITEURL', 'http://example.com/wordpress' );
define( 'WP_HOME', 'http://example.com' );
Nei valori assegnati deve essere sempre premessa la parte del protocollo (http://
o https://
) e non deve mai essere incluso lo slash finale.
Spostare i sub-folder dell'istallazione
Le costanti WP_CONTENT_DIR
e WP_CONTENT_URL
permettono di spostare la directory /wp-content
, che ospita il contenuto del sito, dalla root dell'istallazione in una sub-directory. La prima assume il valore del percorso locale della directory /wp-content
, mentre la seconda il valore della URL:
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/sito/wp-content' );
define( 'WP_CONTENT_URL', 'http://example.com/sito/wp-content' );
Per evitare errori di caricamento delle risorse, quando si sposta la directory /wp-content
vanno sempre dichiarate entrambe le costanti. È anche possibile spostare solo la directory dei plugin grazie alle costanti WP_PLUGIN_DIR
e WP_PLUGIN_URL
:
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/sito/wp-content/hidden/plugins' );
define( 'WP_PLUGIN_URL', 'http://example.com/sito/wp-content/hidden/plugins' );
Allo stesso modo può essere spostato il folder in cui vengono caricati i file multimediali con la costante UPLOADS
:
define( 'UPLOADS', 'sito/wp-content/hidden/uploads' );
Altre impostazioni avanzate
Altre impostazioni permettono di modificare l'intervallo del salvataggio automatico dei post in secondi:
define( 'AUTOSAVE_INTERVAL', 60 );
In wp-config.php
è anche possibile impostare un numero massimo di revisioni dei post o disattivarle:
define( 'WP_POST_REVISIONS', 5 );
define( 'WP_POST_REVISIONS', false );
Per evitare che WordPress invii cookie per ogni richiesta di contenuti statici è possibile impostare il cookie domain per i soli contenuti non statici:
define( 'COOKIE_DOMAIN', 'www.example.com' );
La costante WP_ALLOW_MULTISITE
attiva la funzionalità multisite:
define( 'WP_ALLOW_MULTISITE', true );
Debug mode
A vantaggio degli sviluppatori il file wp-config.php
permette di impostare il sito in modalità debug assegnando true
alla costante WP_DEBUG
:
define( 'WP_DEBUG', true );
In modalità debug, WordPress rileva errori di esecuzione, avvisi e note di PHP, eventuali incompatibilità interne e funzioni deprecate negli script. Per questo è sempre consigliato attivare la modalità debug in fase di sviluppo, soprattutto quando si prevede di pubblicare temi e plugin. Per evitare la visualizzazione di messaggi di errore o notifiche impreviste ai visitatori è consigliato disattivare la modalità debug quando il sito entra in produzione.
Oltre a WP_DEBUG
sono disponibili, anche se non presenti nel file wp-config.php
iniziale, le costanti:
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
define( 'SCRIPT_DEBUG', true );
Costante | Descrizione |
---|---|
WP_DEBUG_LOG |
Attiva il salvataggio di tutti i messaggi di errore nel file debug.log collocato nella directory /wp-content . L'attivazione di questa funzionalità permette di visualizzare messaggi di errore prodotti al di fuori dello schermo visibile, ad esempio durante una richiesta AJAX o un redirect di WordPress. La funzionalità può essere attivata solo se WP_DEBUG è impostato a true . |
WP_DEBUG_DISPLAY |
Stabilisce se mandare a video o meno i messaggi di errore. Se utilizzata insieme con WP_DEBUG_LOG i messaggi di errore possono essere memorizzati in debug.log senza essere stampati a video. |
SCRIPT_DEBUG |
Forza WordPress ad utilizzare la versione non minificata di script e fogli di stile. |
Altre costante utile al debug è SAVEQUERIES
:
define( 'SAVEQUERIES', true );
Impostandone il valore su true
le query vengono memorizzate in un array reso disponibile dalla globale $wpdb->queries
. Una volta salvate le query sarà possibile visualizzarle con il seguente codice:
<?php
if ( current_user_can( 'administrator' ) ) {
global $wpdb;
echo "<pre>";
print_r( $wpdb->queries );
echo "</pre>";
}
?>
Atre funzionalità avanzate
La costante WP_MEMORY_LIMIT
permette di modificare la quantità di memoria consumata da PHP. Può essere necessario aumentare il valore quando si riceve un messaggio di errore del tipo “Allowed memory size of XXX bytes exhausted”
. Il valore predefinito per un'istallazione normale è di 40Mb (64Mb per un'istallazione multisite). Quando i 40Mb non sono sufficienti, è sufficiente assegnare un nuovo valore alla costante:
define('WP_MEMORY_LIMIT', '96M');
Questa impostazione potrebbe non avere effetto se l'host non permette di aumentare la memoria.
Nel pannello di amministrazione si fa ricorso ad una maggiore quantità di memoria. Anche questo livello può essere modificato, grazie alla costante WP_MAX_MEMORY_LIMIT
, il cui valore predefinito è 256Mb:
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
La quantità di memoria allocata con wp-config.php
non può comunque eccedere le impostazioni PHP del server.
Infine, una impostazione che ha effetto sulla performance del sito è l'attivazione della cache:
define( 'WP_CACHE', true );
Tutte le costanti analizzate in questi due capitoli dedicati al file di configurazione devono sempre essere dichiarate prima del commento:
/* Finito, interrompere le modifiche! Buon blogging. */
o, nella versione inglese:
/* That's all, stop editing! Happy blogging. */
Cioè prima del caricamento di wp-settings.php
.
Qualora il sito sia già operativo, prima di modificare wp-config.php
, è sempre opportuno effettuare un backup dell'intera istallazione.