WordPress, tutto sul file wp-config.php

La documentazione ufficiale di WordPress dedica una intera pagina al file wp-config.php. Si tratta del file di configurazione che permette al sito di collegarsi al database. Di regola è sufficiente impostare solamente i parametri per la connessione, le chiavi di sicurezza, il prefisso per le tabelle nel caso di installazioni multiple sullo stesso database, e della localizzazione nella propria lingua, ma è possibile anche impostare altri parametri per personalizzare ulteriormente la propria installazione di WordPress. Vediamo come.

Database

/* impostazioni manuali */
define('DB_NAME', 'nome-database');
define('DB_USER', 'utente-database');
define('DB_PASSWORD', 'password-database');
define('DB_HOST', 'localhost');
/* utilizza delle porte alternative */
define('DB_HOST', 'localhost:1234');
define('DB_HOST', 'mysql.domain.tld:1234');
/* imposta il database in maniera dinamica */
define('DB_HOST', $_ENV{DATABASE_SERVER});
/* set di caratteri e la collation */
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
/* prefisso delle tabelle */
$table_prefix  = 'wp_';  //meglio cambiare con una cosa tipo yz548_
/* abilita ottimizzazione automatica */
define('WP_ALLOW_REPAIR', true); // da togliere una volta riparato il database

Sicurezza

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

Per generare le chiavi, è possibile visitare questa pagina.

Localizzazione

Per utilizzare WordPress nella propria lingua, bisogna caricare nella directory /wp-content/languages un file .mo (per l’italiano il file è it_IT.mo)
La lingua di default è l’inglese.

define('WPLANG', 'it_IT');
/* directory personalizzata */
define('LANGDIR', '');

Directory

/* 
Percorso assoluto alla directory di WordPress
*/
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');

spostare la directory wp-content

/* percorso locale completo alla directory (senza slash finale) */
define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/path/wp-content');
/* URI completo della directory (senza slash finale) */
define('WP_CONTENT_URL', 'http://example/blog/wp-content');

spostare la directory del plugin

/* percorso locale completo (senza slash finale) */
define('WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'].'/path/wp-content/plugins');
/* URI completo della directory (senza slash finale) */
define('WP_PLUGIN_URL', 'http://example/blog/wp-content/plugins');

definire il percorso assoluto al tema attivo tramite delle costanti predefinite. Invece di usare bloginfo('template_directory'), è possibile ridurre al minimo le query al database:

/* imposta il percorso al template e al foglio di stile del tema attivo */
define('TEMPLATEPATH', get_template_directory());
define('STYLESHEETPATH', get_stylesheet_directory());

siccome queste due impostazioni effettuano comunque una query al database è possibile impostare il valore in maniera statica:

define('TEMPLATEPATH', '/percorso/assoluto/a/wp-content/themes/tema-attivo');
define('STYLESHEETPATH', '/percorso/assoluto/a/wp-content/themes/tema-attivo');

Indirizzi del Blog e del Sito

Anche qui, impostando in maniera statica i valori relativi all’indirizzo del blog, si riducono le query al database

define('WP_HOME', 'http://www.studio4040.it');
define('WP_SITEURL', 'http://www.studio4040.it');
/* oppure settarle dinamicamente */
define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST'].'/percorso/a/wordpress');
define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/percorso/a/wordpress');

Gestire la Cache

define('WP_CACHE', true);      // attiva la cache
define('ENABLE_CACHE', true);  // attiva la cache
define('CACHE_EXPIRATION_TIME', 3600); // scadenza della cache in secondi
define('WP_CACHE', false);     // disattiva la cache
define('DISABLE_CACHE', true); // disattiva la cache

Specificare un Dominio per i Cookie

define('COOKIE_DOMAIN', '.studio404.it'); // notare il '.' iniziale
define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home').'/'));
define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl').'/'));
define('PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL));
define('ADMIN_COOKIE_PATH', SITECOOKIEPATH.'wp-admin');

Tabelle Utenti personalizzate

define('CUSTOM_USER_TABLE', $table_prefix.'my_users');
define('CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta');

FTP/SSH

/* forces the filesystem method: "direct", "ssh", "ftpext", or "ftpsockets" */
define('FS_METHOD', 'ftpext');
/* absolute path to root installation directory */
define('FTP_BASE', '/path/to/wordpress/');
/* absolute path to "wp-content" directory */
define('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/');
/* absolute path to "wp-plugins" directory */
define('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/');
/* absolute path to your SSH public key */
define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
/* absolute path to your SSH private key */
define('FTP_PRIVKEY', '/home/username/.ssh/id_rsa');
/* either your FTP or SSH username */
define('FTP_USER', 'username');
/* password for FTP_USER username */
define('FTP_PASS', 'password');
/* hostname:port combo for your SSH/FTP server */
define('FTP_HOST', 'ftp.example.org:21');

Revisioni degli Articoli, Salvataggio automatico e Cestino

/* limita il numero di revisioni per ogni post a 3 */
define('WP_POST_REVISIONS', 3);
/* disattiva le revisioni */
define('WP_POST_REVISIONS', false);
/* specifica l'intervallo per il salvataggio automatico (in secondi) */
define('AUTOSAVE_INTERVAL', 160);
/* svuota il cestino dopo 7 giorni */
define('EMPTY_TRASH_DAYS', 7);
/* disattiva il cestino */
// attenzione: WP non chiede conferma
// quando si clicca 'Cancella definitivamente'
define('EMPTY_TRASH_DAYS', 0);

Debug ed Error Log

define('WP_DEBUG', true); // attiva debug mode
define('WP_DEBUG', false); // disattiva debug mode (default)
@ini_set('log_errors','On');
@ini_set('display_errors','Off');
/*
Creare un file php_error.log, fare in modo che sia scrivibile e 
caricarlo sul proprio server, specificando il percorso assoluto:
*/
@ini_set('error_log','/percorso/assoluto/al/file/php_error.log');

Aumentare la Memoria di PHP

Se le tue pagine danno spesso un errore del tipo “Allowed memory size of xxx bytes exhausted” è necessario aumentare la memoria di PHP.
Se l’hosting lo permette, è possibile farlo tramite queste impostazioni:

define('WP_MEMORY_LIMIT', '64M');
define('WP_MEMORY_LIMIT', '96M');
define('WP_MEMORY_LIMIT', '128M');

Sovrascrivere i permessi dei File

define('FS_CHMOD_FILE', 0755);
define('FS_CHMOD_DIR', 0644);

Salvare e mostrare le query al database

define('SAVEQUERIES', true);

inserire nel footer del tema attivo queste righe:

/* display the query array for admin only */
if (current_user_can('level_10')) {
global $wpdb;
echo "<pre>";
print_r($wpdb->queries);
echo "</pre>";
}

Accesso limitato tramite Proxy o Intranet

define('WP_HTTP_BLOCK_EXTERNAL', true);  // blocca richieste esterne
define('WP_HTTP_BLOCK_EXTERNAL', false); // permetti richieste esterne
define('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org'); // whitelist degli hosts

Abilita Multi-Site

define('WP_ALLOW_MULTISITE', true);

e poi gestire l’attivazione tramite la pagina di amministrazione “Network” in Strumenti » Network.

Mostra tutte le Costanti definite

print_r(@get_defined_constants());

Rendere sicuro il file WP-Config

Di default il file wp-config.php si trova nella directory principale di WordPress, ma può essere spostato di modo che altri utenti del sito non possano visualizzarlo. WP può cercare in altre directory, se non trova il file nella root.
E’possibile inoltre limitare l’accesso al file da web tramite il file .htaccess


order allow,deny
deny from all