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