Categorie
Guide

Il file wp-config.php di WordPress

Il file wp-config.php è uno dei componenti più importanti in un sito WordPress. Vediamo tutti i parametri che possiamo impostarvi

Il file wp-config.php si trova nella root di WordPress e contiene importanti informazioni riguardo la configurazione. Oltre ai parametri predefiniti, ovvero quelli che vengono automaticamente creati attraverso il processo di installazione, può contenere anche una serie di opzioni avanzate con cui configurare il proprio sito web. Vediamo quali sono.

File wp-config.php, le impostazioni obbligatorie

Le impostazioni obbligatorie del file wp-config.php sono quelle che, come anticipato, vengono automaticamente impostate in fase di installazione, e sono:

DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_CHARSET e DB_COLLATION

I primi quattro di questi sei parametri si riferiscono alla connessione al database di WordPress, su cui sono memorizzati tutti i dati relativi al nostro sito: post, opzioni, utenti etc.. Queste impostazioni sono fondamentali in quanto, senza di esse, WordPress non è in grado di collegarsi al database e di reperire quindi le informazioni necessarie al suo funzionamento. In particolare, il parametro DB_HOST, che definisce l’indirizzo al quale il server MySQL risponde, può indicare anche una porta personalizzata (che può essere stata impstata per aumentare il grado di sicurezza) o un socket personalizzato. Questi andranno inseriti nel seguente formato:

define( 'DB_HOST', '127.0.0.1:3307' );

Oppure, nel caso del socket:

define( 'DB_HOST', '127.0.0.1:/var/run/mysqld/mysqld.sock' );

In assenza di queste opzioni visualizzerete il messaggio di errore “Errore nello stabilire una connessione al database”. Gli ultimi due parametri si riferiscono invece al charset del database, di predefinito WordPress imposta e supporta utf8mb4 e con questo charset viene installato, la collazione invece, definita con il secondo dei due parametri, lasciata vuota è automaticamente calcolata in base al charset, ovvero utf8mb4_unicode_ci. Si consiglia di non modificare questi due parametri altriment potreste ritrovarvi caratteri strani all’interno dei vostri post.

AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT

Queste otto opzioni determinano le chiavi di sicurezza del vostro sito WordPress. Vengono impostati automaticamente in modo casuale in fase di installazione. Se il vostro sito è stato compromesso, perché vittima di hacking, dopo averlo ripulito da eventuali virus ed utenti creati senza autorizzazione, consiglio di cambiarli quanto prima. WordPress mette a disposizione un url che ad ogni refresh genera delle nuove chiavi in modo casuale e sicuro, collegatevi all’indirizzo WordPress Secret Key generator, copiatele e sostituitele a quelle presenti sul vostro file wp-config.php.

$table_prefix

A differenza delle altre opzioni, determinate sotto forma di costante, questa è una variabile che va valorizzata con il prefisso da utilizzare sul vostro database. Per incrementare la sicurezza del vostro sito consiglio di non utilizzare il prefisso dato da WordPress automaticamente, ovvero “wp_”, ma di crearne una vostra formata da quattro caratteri casuali seguiti da underscore, es. “t2se_”. Tuttavia modificare il prefisso è un’operazione che può essere impostata solo in fase di installazione, per modificare quello di un sito già in funzione occorre seguire la guida “Modificare il prefisso tabelle database WordPress“.

WP_DEBUG

Questa opzione rende possibile l’attivazione della modalità di debug. Personalmente sono molto pignolo e preferisco lasciarla attiva di default in quanto sono maniacale nella correzione di tutti gli errori e tutti gli avvisi, per cui, se non ve ne sono sul vostro sito si può lasciare tranquillamente attiva. In caso contrario lasciarla disattiva è l’opzione migliore. Attivandola infatti avrete la visualizzazione a schermo di ogni errore che avviene sul vostro sito e vi permetterà quindi di correggerli più facilmente.

Obbligatorio attivarla in caso di correzione di problemi di “white screen”.

File wp-config.php, impostazioni facoltative

Oltre alle impostazioni obbligatorie, che WordPress crea in automatico in fase di installazione, all’interno del file wp-config.php è possibile anche indicare una serie di opzioni facoltative che permettono di ottimizzare e personalizzare il vostro sito WordPress. Vediamo quali sono.

WP_HTTP_BLOCK_EXTERNAL e WP_ACCESSIBLE_HOSTS

Questi due parametri permettono di limitare le richieste che il vostro sito effettua all’esterno, opzione generalmente utile a coloro i quali hanno installato WordPress in un ambiente chiuso.

In particolare è possibile configurare il parametro inserendo all’interno del proprio file wp-config.php le seguenti righe di codice:

define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );

Tramite la seconda opzione, WP_ACCESSIBLE_HOSTS, è possibile definire una lista di domini che fanno eccezione alla precedente opzione, a cui, quindi, si vuole dare accesso al proprio sito. Nell’esempio abbiamo bloccato alle risorse esterne, ad eccezione di api.wordpress.com e di tutti i sottodomini github.com.

Attivare questa opzione portano però a delle limitazioni, ovvero il vostro sito non potrà controllare gli aggiornamenti (a meno che non si inserisca l’indirizzo degli aggiornamenti nella whitelist definita dal parametro WP_ACCESSIBLE_HOSTS), e non potrà nemmeno attivare eventualmente le licenze dei plugin premium acquistati ed installati. Si consiglia quindi di utilizzarla solo nelle installazioni di WordPress in locale e quelle non raggiungibili da utenti all’esterno della vostra rete locale in quanto la mancanza di verifica degli aggiornamenti potrebbe compromettere la sicurezza del vostro sito WordPress. Da usare solo in ambienti staging quindi.

WP_POST_REVISIONS

Si tratta di un’importante opzione per la salvaguardia dello spazio occupato dal vostro database WordPress. Tramite questa opzione andate ad indicare quante “revisioni” conservare al massimo su ogni post che modificate. Di predefinito sono illimitate e questo comporta che ogni modifica che fate su un post, WordPress automaticamente salva nella tabella “posts” una nuova entità. Lasciando il parametro predefinito il vostro database crescerà di dimensione esponenzialmente. Vi sono plugin (o comandi SQL) che permettono di pulire il database da tutte le copie di backup salvate, uno di questi è “WP-Optimize”.

Tuttavia il mio consiglio è quello di impostare, in fase di installazione iniziale, un massimo di 3 revisioni per ogni post, tramite l’aggiunta della seguente stringa al vostro file wp-config.php

define('WP_POST_REVISIONS', 3);

In questo modo il vostro database rimarrà pulito e non avrete bisogno di effettuare pulizie periodiche, che, per quanto possano essere impostate sulla base di un cronjob, occuperanno comunque importanti risorse del server.

WP_DEBUG_LOG

Se preferite loggare i problemi che si verificano sul sito, potete attivare questa opzione in congiunzione con WP_DEBUG per permettere a WordPress di creare un file debug.log nella cartella wp-content contenente tutti i problemi che si verificano durante il funzionamento del sito. Questa opzione è molto utile per visualizzare gli errori che si verificano off-screen, come ad esempio quelli durante una chiamata Ajax o durante l’esecuzione di un comando wp-cron.

WP_DEBUG_DISPLAY

Questa opzione serve per disabilitare la visualizzazione sullo schermo degli errori generati dal debug. Serve nel caso in cui vogliate attivare il log debug ma non volete infastidire gli utenti con gli errori sulle pagine HTML. Di predefinito è impostato su “true”.

DISABLE_WP_CRON

Questa opzione permette la disattivazione del sistema cron nativo di WordPress. Per chi non fosse familiare con i sistemi basati su *nxix, il file cron contiene tutti i processi che vengono eseguiti, automaticamente, dal sistema ad un determinato orario. Ed anche WordPress ha un sistema simile, WP-Cron, che funziona però in modo virtuale. Questo significa che la macchina non eseguirà automaticamente il comando ad un determinato orario, piuttosto al passare dell’orario definito per il “job” l’utente successivo che visiterà il sito innescherà il comando. Questo sistema è però abbastanza pesante e tanti preferiscono disattivarlo in favore di un Cron reale da impostare sul server. In tal caso quello di WordPress andrà disattivato con la seguente opzione.

define( 'DISABLE_WP_CRON', true );

Attenzione, nel momento in cui disattiverete WP-Cron, accertatevi di aver impostato, e che funzioni, il Cron del server, in quanto, in caso contrario, tante funzionalità di WordPress che fanno uso del cron cesseranno di funzionare… una su tutte i post programmati.