I migliori comandi per wp-config.php: come ottimizzare, proteggere e velocizzare WordPress

Il file wp-config.php è il vero centro di controllo di WordPress. Si trova nella cartella principale (root) dell’installazione e definisce le credenziali del database, le chiavi di crittografia e le direttive che regolano il comportamento dell’intero CMS. Modificare questo file significa agire direttamente sul motore del sito, scavalcando l’interfaccia grafica.

Tutte le direttive descritte in questa guida vanno inserite all’interno del file, subito prima della riga standard:

PHP

Pubblicità

/* That's all, stop editing! Happy publishing. */

Regola d’oro: la copia di sicurezza

Prima di aprire l’editor e modificare il codice, crea una copia di backup. Se ti stai collegando tramite riga di comando sul tuo server, incolla questo comando per generare una copia salvata con la data di oggi:

Bash

cp wp-config.php wp-config.php.bak-$(date +%F)

In caso di sintassi errata o schermo bianco, potrai ripristinare il file originale in un secondo eliminando la nuova versione e rinominando il backup.

1. Gestione della memoria e ottimizzazione delle risorse

Quando WordPress incontra errori del tipo “Fatal error: Allowed memory size exhausted“, la causa è un limite di memoria troppo basso impostato per l’esecuzione degli script PHP.

PHP

define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

WP_MEMORY_LIMIT definisce il tetto di RAM assegnato ai processi del frontend (le pagine viste dai visitatori). WP_MAX_MEMORY_LIMIT alza la soglia per l’area di amministrazione e per le operazioni di background particolarmente onerose, come l’elaborazione di immagini ad alta risoluzione o la generazione di backup.

Nota pratico-operativa: Queste istruzioni indicano a WordPress quanta memoria richiedere, ma non possono superare il valore massimo (memory_limit) impostato a livello del file php.ini del server.

Controllo delle revisioni e salvataggi automatici

Per impostazione predefinita, WordPress salva ogni singola modifica apportata a pagine e articoli. Con il passare del tempo, questo comportamento gonfia il database di migliaia di righe inutili.

Leggi anche: Ottimizzare database WordPress: pulizia sicura

PHP

define( 'WP_POST_REVISIONS', 5 );
define( 'AUTOSAVE_INTERVAL', 120 );
define( 'EMPTY_TRASH_DAYS', 7 );
  • Revisioni: Inserendo 5, mantieni solo le ultime 5 versioni di ciascun contenuto, eliminando lo storico più vecchio. Impostando il valore su false, disattivi del tutto il tracciamento delle modifiche.
  • Salvataggio automatico: Aumenta l’intervallo di salvataggio durante la scrittura nell’editor a 120 secondi (il valore di default è 60), riducendo le richieste inviate al server mentre lavori.
  • Gestione cestino: I contenuti eliminati rimangono nel cestino per 7 giorni prima di sparire. Impostando il valore a 0, disabiliti la cartella e l’eliminazione diventerà immediata e irreversibile.

2. Diagnostica e isolamento degli errori (Debug)

Vedere una schermata bianca senza alcun messaggio d’errore è una delle situazioni più sgradevoli nell’amministrazione di un sito web. Il sistema di debug integrato permette di tracciare i problemi senza mostrare stringhe di codice agli utenti.

PHP

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Questo blocco attiva il tracciamento interno e scrive tutti i warning o i fatal error all’interno del file /wp-content/debug.log. L’istruzione WP_DEBUG_DISPLAY impostata su false garantisce che nessun messaggio di errore appaia sul sito pubblico, proteggendo la struttura del server da occhi indiscreti.

Strumenti per sviluppatori e analisi query

PHP

define( 'SCRIPT_DEBUG', true );
define( 'SAVEQUERIES', true );
  • SCRIPT_DEBUG: Costringe WordPress a caricare le versioni estese (non minificate) dei file JavaScript e CSS di sistema. Utile se stai risolvendo conflitti con gli script di un plugin.
  • SAVEQUERIES: Salva in un array tutte le query SQL eseguite sul database durante il caricamento della pagina, indicando il tempo impiegato e la funzione che le ha generate. Aumenta il carico di lavoro sul server: usalo solo in ambienti di test o per brevi sessioni di diagnosi.

3. Rinforzare le difese e la sicurezza del server

L’area di amministrazione di WordPress è il bersaglio primario degli attacchi di tipo brute force o di injection. Alcune istruzioni nel file di configurazione permettono di chiudere le porte d’accesso più critiche.

PHP

define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', true );
define( 'FORCE_SSL_ADMIN', true );
  • Blocco editor interno (DISALLOW_FILE_EDIT): Rimuove la possibilità di modificare il codice di temi e plugin direttamente dalla dashboard. Se un malintenzionato dovesse ottenere un account amministratore, questa stringa gli impedirà di iniettare codice malevolo tramite l’editor integrato.
  • Blocco modifiche complete (DISALLOW_FILE_MODS): Va oltre la precedente: impedisce del tutto l’installazione, la disinstallazione e l’aggiornamento di plugin, temi e core da pannello. In questo scenario, gli aggiornamenti dovranno avvenire via FTP, SFTP o riga di comando (wp-cli).
  • SSL Obbligatorio (FORCE_SSL_ADMIN): Forza l’uso del protocollo sicuro HTTPS su tutte le sessioni di login e all’interno della dashboard, cifrando le credenziali inviate tramite browser.

Gestione del ripristino del database

PHP

define( 'WP_ALLOW_REPAIR', false );

In caso di tabelle corrotte, impostando questa voce su true si abilita la funzionalità automatica raggiungibile all’indirizzo [https://www.tuosito.it/wp-admin/maint/repair.php](https://www.tuosito.it/wp-admin/maint/repair.php).

Attenzione: Questa pagina è accessibile da chiunque senza bisogno di autenticarsi. Mantieni la stringa su false o rimuovila del tutto; inseriscila solo all’occorrenza e cancellala immediatamente dopo aver terminato la riparazione.

Chiavi di sicurezza (SALT) e prefisso tabelle

PHP

define( 'AUTH_KEY',         'incolla-qui-la-stringa-generata' );
define( 'SECURE_AUTH_KEY',  'incolla-qui-la-stringa-generata' );
define( 'LOGGED_IN_KEY',    'incolla-qui-la-stringa-generata' );
define( 'NONCE_KEY',        'incolla-qui-la-stringa-generata' );
define( 'AUTH_SALT',        'incolla-qui-la-stringa-generata' );
define( 'SECURE_AUTH_SALT', 'incolla-qui-la-stringa-generata' );
define( 'LOGGED_IN_SALT',   'incolla-qui-la-stringa-generata' );
define( 'NONCE_SALT',       'incolla-qui-la-stringa-generata' );

Le chiavi SALT servono a cifrare le informazioni salvate nei cookie degli utenti. Puoi generarne di nuove e casuali tramite il servizio ufficiale di WordPress

. Inserire una nuova serie di chiavi invaliderà automaticamente le sessioni di tutti gli utenti collegati, costringendoli a rieseguire il login: un’operazione indispensabile se sospetti una compromissione delle credenziali.

PHP

$table_prefix = 'wp_xyz9_';

Sostituire il prefisso predefinito delle tabelle (wp_) con una combinazione casuale limita l’efficacia degli attacchi orientati alle SQL Injection. Questa modifica va impostata durante la primissima installazione del sito. Farlo a sito già avviato richiede la rinominazione manuale delle tabelle da phpMyAdmin o WP-CLI e la modifica di alcune chiavi all’interno della tabella options.

4. Controllo degli aggiornamenti automatici

Gli aggiornamenti automatici mantengono il sito al sicuro, ma in alcune architetture complesse potrebbero creare problemi di compatibilità imprevisti.

PHP

define( 'WP_AUTO_UPDATE_CORE', 'minor' );
define( 'AUTOMATIC_UPDATER_DISABLED', true );

Per l’aggiornamento del core del CMS (WP_AUTO_UPDATE_CORE), puoi scegliere tra tre valori:

  • 'minor': applica solo le patch di sicurezza e manutenzione (es. da 6.5.1 a 6.5.2). È la scelta raccomandata per bilanciare stabilità e sicurezza.
  • true: applica automaticamente anche i salti di versione principali (es. da 6.4 a 6.5).
  • false: blocca qualsiasi aggiornamento del motore di WordPress.

L’istruzione AUTOMATIC_UPDATER_DISABLED impostata su true disattiva invece il motore di aggiornamento automatico per qualsiasi componente, inclusi file di lingua e traduzioni.

Per abilitare l’aggiornamento automatico di plugin e temi non si usano costanti in wp-config.php, ma appositi filtri da aggiungere al file functions.php o all’interno di un plugin dedicato:

PHP

add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );

5. Override degli indirizzi URL del sito

Se cambi dominio o trasferisci l’installazione su un nuovo server senza aver aggiornato il database, l’accesso al pannello di controllo potrebbe risultare bloccato a causa dei reindirizzamenti al vecchio indirizzo.

PHP

define( 'WP_HOME', 'https://www.tuosito.it' );
define( 'WP_SITEURL', 'https://www.tuosito.it' );

Inserendo queste due righe, imponi a WordPress gli URL corretti, ignorando le impostazioni salvate nella tabella wp_options. WP_HOME rappresenta l’indirizzo visibile dai visitatori, mentre WP_SITEURL individua il percorso in cui risiedono fisicamente i file del core di WordPress.

6. Sostituzione del WP-Cron con un Cron job di sistema

Il meccanismo nativo di pianificazione delle attività di WordPress (WP-Cron) non funziona come un demone di sistema continuo. Si attiva soltanto quando un utente visita una pagina del sito. Sui siti con pochissimo traffico i compiti programmati saltano; su quelli ad altissimo traffico, invece, ogni singola richiesta genera overhead inutile.

Per prima cosa, disattiva l’esecuzione automatica ad ogni visita inserendo questo comando nel file di configurazione:

PHP

define( 'DISABLE_WP_CRON', true );

Fatto questo, devi impostare un’esecuzione programmata direttamente dal crontab del server. Apri la configurazione degli interventi dal terminale:

Bash

crontab -e

Aggiungi la seguente istruzione per lanciare lo script ogni 5 minuti:

Bash

*/5 * * * * cd /percorso/del/tuo/sito && php wp-cron.php > /dev/null 2>&1

Se il server utilizza l’architettura OpenLiteSpeed, è consigliabile specificare direttamente il binario PHP ottimizzato (LSPHP), ad esempio:

Leggi anche: Aggiornare tutti i pacchetti PHP (lsphp) su OpenLiteSpeed: Guida a Snapshot e Rollback Senza Rischi

Bash

*/5 * * * * cd /percorso/del/tuo/sito && /usr/local/lsws/lsphp83/bin/php wp-cron.php > /dev/null 2>&1

7. Abilitazione del sistema di Cache

PHP

define( 'WP_CACHE', true );

Questa istruzione indica a WordPress di caricare lo script wp-content/advanced-cache.php. È la direttiva base utilizzata dai più diffusi plugin di ottimizzazione (come LiteSpeed Cache o WP Rocket). Se la costanti non è impostata su true, la cache di pagina del plugin potrebbe non avviarsi correttamente.

8. Definizione dell’ambiente di lavoro

PHP

define( 'WP_ENVIRONMENT_TYPE', 'production' );

Permette di indicare al sistema in quale ambiente sta girando l’applicazione. I valori ammessi sono:

  • local
  • development
  • staging
  • production

Plugin e temi possono interrogare questo valore tramite la funzione nativa wp_get_environment_type() e disattivare o attivare funzionalità specifiche (ad esempio disabilitare gli invii di email di test o mostrare banner di avviso quando ci si trova in staging).

9. Struttura dei file e comportamento dei media

PHP

define( 'FS_METHOD', 'direct' );
define( 'IMAGE_EDIT_OVERWRITE', true );
  • Modalità File System (FS_METHOD): L’opzione 'direct' forza WordPress a scrivere i file aggiornati sul disco senza richiedere le credenziali FTP. Funziona senza rischi solo se l’utente del processo web (es. www-data o nobody) coincide con il proprietario della cartella dei file.
  • Gestione modifiche immagini (IMAGE_EDIT_OVERWRITE): Quando ridimensioni o ritagli un’immagine tramite il media library di WordPress, il sistema conserva il file originale creando nuove copie. Impostando il valore su true, le modifiche successive sovrascriveranno l’immagine elaborata in precedenza, evitando il consumo eccessivo di spazio sul disco.

Personalizzazione del percorso della cartella contenuti

È possibile cambiare il nome o la posizione della cartella wp-content per nascondere parzialmente la struttura predefinita del CMS:

PHP

define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/risorse' );
define( 'WP_CONTENT_URL', 'https://www.tuosito.it/risorse' );

Nota: Molti plugin non utilizzano le API ufficiali di WordPress per ricavare i percorsi e danno per scontata l’esistenza della cartella wp-content. Applica questa modifica solo se stai sviluppando un’architettura custom e hai testato tutti gli add-on in uso.

10. Attivazione della modalità Multisite

Se vuoi gestire più siti web da una singola installazione di WordPress, abilita l’interfaccia di creazione della rete con questa singola riga:

PHP

define( 'WP_ALLOW_MULTISITE', true );

Dopo aver salvato il file e ricaricato la pagina di amministrazione, troverai la nuova opzione sotto il menu Strumenti > Configurazione rete. Una volta completati i passaggi guidati della procedura, WordPress genererà un secondo blocco di costanti personalizzate che dovrai incollare nuovamente all’interno di wp-config.php.

Mantenimento del file e sicurezza dell’ambiente

Dopo aver completato le modifiche e verificato che il sito continui a funzionare senza interruzioni, proteggi il file da accessi indesiderati sul server.

Imposta i permessi corretti: Imposta permessi di lettura stringenti tramite riga di comando per evitare che altri utenti del server possano leggere i dati del database:
Bash

chmod 600 wp-config.php 

(Usa 640 se il processo web appartiene a un gruppo separato).

Spostamento del file: WordPress possiede una logica nativa di ripiego: se non trova wp-config.php nella cartella principale del sito, risale automaticamente di un livello nella directory superiore. Se la struttura del tuo server lo consente, puoi spostare il file sopra la cartella pubblica (public_html o www), rendendolo del tutto inaccessibile via web.

Altro per te

PHP
PHP Compatibility Checker
Controlla il tuo plugin WordPress prima di aggiornare PHP Verifica la compatibilità con PHP 8.0–8.5 Scopri eventuali problemi nel codice PHP Analizza il tuo plugin WordPress online Preparati a PHP 8.5
Verifica ora →
PDF Strumenti PDF gratis Nel browser, senza upload Apri gli strumenti

🔒

Contenuto riservato

Per scaricare questo file devi prima registrarti oppure accedere con il tuo account.

XWhatsAppTelegram