File wp-config.php di WordPress
Il file più importante di WordPress é questo (wp-config.php.)
Questo file wp-config.php è il file principale del CMS WordPress ed é capace di fornire funzioni di vario tipo al gestionale. Di base offre queste funzioni sotto, ma se ne possono aggiungere di personalizzate se conoscete bene il sistema.
Ricordiamo inoltre che tale file deve sempre avere il minimo dei permessi CHMOD consentiti dal vostro server per motivi di sicurezza. Alcune delle funzioni di base che troviamo in questo file sono: dati per la connesione al database, 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 xyz548_
/* 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.vostrosito.it’);
define(‘WP_SITEURL’, ‘http://www.vostrosito.it’);
/* oppure settarle dinamicamente */
define(‘WP_HOME’, ‘http://’.$_SERVER[‘HTTP_HOST’].’/percorso/a/wordpress’);
define(‘WP_SITEURL’, ‘http://’.$_SERVER[‘HTTP_HOST’].’/percorso/a/wordpress’);
Cache WordPress
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’, ‘.vostrosito.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.vostrosito.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 <code>php_error.log</code>, 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 il vostro hosting lo permette e ne a bisogno, è possibile farlo tramite queste impostazioni sempre dal file wp-config.php:
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 WordPress
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 ovvero la ROOT del sito, 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
<Files wp-config.php>
order allow,deny
deny from all
</Files>