Ciao, volevo iniziare una raccolta di snippet "cotti e mangiati" come promemoria per lo sviluppo veloce in WordPress.
Email SMTP
Sapevi che WordPress include già PHPMailer pronto per essere configurato con SMTP? Non servono plugin: basta aggiungere questo snippet. Tutte le email gestite con wp_mail() verranno inviate tramite la tua configurazione SMTP.
Andiamo nel file wp-config.php di WordPress e creiamo le nostre costanti.
// SMTP email settings
define( 'SMTP_USERNAME', 'example@gmail.com' );
define( 'SMTP_PASSWORD', '1234567' );
define( 'SMTP_SERVER', 'smtp.gmail.com' );
define( 'SMTP_FROM', 'example@example.com' );
define( 'SMTP_NAME', 'myname' );
define( 'SMTP_PORT', '587' );
define( 'SMTP_SECURE', 'tls' );
define( 'SMTP_AUTH', true );
define( 'SMTP_DEBUG', 0 );
Fatto questo andiamo nel file functions.php e usiamo il "gancio" che WordPress, premurosamente, ci mette a disposizione.
add_action( 'phpmailer_init', 'my_phpmailer_smtp' );
function my_phpmailer_smtp( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_SERVER;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USERNAME;
$phpmailer->Password = SMTP_PASSWORD;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
Per la sicurezza: Questo snippet è per sviluppo/test. In produzione:
- Usa variabili d'ambiente (
getenv('SMTP_PASSWORD')) anziché password in chiaro- Oppure considera plugin come WP Mail SMTP che gestiscono le credenziali in modo sicuro
Velocizzare il caricamento tramite .htaccess
Ogni caricamento web richiede decine di richieste HTTP tra browser e server per recuperare immagini, script e stili. Senza ottimizzazione, il sito risulta più lento. Intervenendo sul file .htaccess di Apache, possiamo istruire il server a gestire queste risorse in modo efficiente attraverso due tecniche chiave:
mod_deflateabilita la compressione GZIP per un trasferimento di informazioni "compresso" quindi più veloce.mod_expiresabilita la cache del browser per immagini e file CSS e JS.
Inseriamo questo codice all'inizio del file .htaccess nella root di WordPress.
# --- INIZIO OTTIMIZZAZIONE ---
# 1. ATTIVA LA COMPRESSIONE GZIP
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript image/svg+xml
</IfModule>
# 2. ATTIVA LA CACHE DEL BROWSER (EXPIRES)
<IfModule mod_expires.c>
ExpiresActive On
# Immagini per 1 anno
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
# CSS e JS per 1 mese
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
# --- FINE OTTIMIZZAZIONE ---
Maintenance mode manuale
Quando proprio i plugin non ci piacciono e abbiamo bisogno di oscurare temporaneamente il nostro sito per manutenzione possiamo usare questo snippet.
function wp_maintenance_mode() {
if (!current_user_can('edit_themes') || !is_user_logged_in()) {
wp_die('<h1>Sito in manutenzione</h1><p>torneremo presto online!</p>');
}
}
add_action('get_header', 'wp_maintenance_mode');
Disabilitare le email di aggiornamento automatico
Per impostazione predefinita, WordPress invia notifiche email quando aggiorna automaticamente core e plugin. Possiamo disabilitarle aggiungendo questi filtri in functions.php:
// Disable auto-update emails.
add_filter( 'auto_core_update_send_email', '__return_false' );
// Disable auto-update emails for plugins.
add_filter( 'auto_plugin_update_send_email', '__return_false' );
Nascondere la versione di WordPress
Di default, WordPress inserisce un tag meta con la versione corrente della nostra installazione.
`<meta name="generator" content="WordPress 6.9.1">`
Per rimuovere questo tag utilizziamo il seguente snippet.
remove_action('wp_head', 'wp_generator');
Blocca l'accesso ai file superflui
Per impostazione predefinita, WordPress include alcuni file che è meglio rendere inaccessibili: readme.html che contiene la versione WP, license.txt che espone informazioni, e wp-config-sample.php che è un file di esempio non necessario. Blocchiamo tutto tramite .htaccess WordPress ci tornerà la pagina 404.
# Blocca accesso a file sensibili
<FilesMatch "^(readme\.html|license\.txt|wp-config-sample\.php)$">
Order allow,deny
Deny from all
</FilesMatch>
Personalizzare il logo nella login page
Con questo snippet personalizziamo la pagina di login cambiando il logo, e la destinazione del link settando il nostro sito.
// 1. Cambia il Logo (CSS)
add_action('login_head', 'my_custom_login_logo');
function my_custom_login_logo() {
?>
<style type="text/css">
#login h1 a {
background-image: url(<?php echo esc_url(get_stylesheet_directory_uri() . '/img/gi-avatar.png'); ?>) !important;
background-size: contain !important;
width: 85px !important;
height: 85px !important;
background-position: center !important;
border-radius: 0%;
}
</style>
<?php
}
// 2. Cambia l'URL del logo (destinazione al click)
add_filter('login_headerurl', 'my_login_logo_url');
function my_login_logo_url() {
return esc_url(home_url());
}
// 3. Cambia il testo dell'attributo title
add_filter('login_headertext', 'my_login_logo_url_title');
function my_login_logo_url_title() {
return esc_html(get_option('blogname'));
}
Per questa prima parte è tutto, grazie per aver letto questo post. A presto.

