Se stai leggendo questo, probabilmente sei stanco dei consigli standard sulle prestazioni di WordPress. La solita routine—installare WP Rocket, aggiungere un plugin per l'ottimizzazione delle immagini e inserire un gestore di risorse—porta spesso a un paradosso: installi plugin per velocizzare il tuo sito, ma i plugin stessi aggiungono pesantezza al database, cron job in background e i propri payload CSS/JS.
La verità è che WordPress non ha bisogno di 15 plugin per le prestazioni per caricarsi in meno di un secondo. La vera ottimizzazione della velocità avviene a livello hardware: il server, il database e il codice core.
In questa guida, bypasseremo completamente l'ecosistema dei plugin. Ottimizzeremo WordPress usando configurazioni lato server, wp-config.php regolazioni e functions.php snippet chirurgici.
1. Le fondamenta lato server (Nessun PHP richiesto)
Prima di toccare una singola riga di codice WordPress, il tuo ambiente server deve essere pesantemente ottimizzato. Un server debole non può essere riparato dalla cache front-end.
Aggiorna a PHP 8.1+
WordPress gira su PHP. Passare da PHP 7.4 a PHP 8.1 o 8.2 può produrre una riduzione del 20-30% nel tempo di esecuzione e un consumo di memoria significativamente inferiore. Azione: Cambia questo nel tuo cPanel, Plesk o via CLI se gestisci il tuo VPS.
Abilita la compressione a livello server (Brotli invece di Gzip)
Mentre Gzip è lo standard, Brotli (sviluppato da Google) fornisce rapporti di compressione migliori di circa il 15-20% per i file di testo (HTML, CSS, JS) allo stesso costo di CPU. Azione (Nginx): Assicurati che il tuo nginx.conf abbia Brotli abilitato:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Implementa la cache FastCGI (Nginx) o LiteSpeed Cache
Invece di utilizzare un plugin di caching basato su PHP (che richiede comunque a WordPress di caricarsi parzialmente per servire la cache), esegui la cache a livello di server web. La cache FastCGI di Nginx memorizza l'HTML generato nella RAM o sul disco e lo serve direttamente, bypassando completamente PHP e MySQL per i visitatori anonimi.
2. Rafforzamento e snellimento tramite wp-config.php
Il wp-config.php file è la tua sala di controllo. Per impostazione predefinita, WordPress consente determinati comportamenti che appesantiscono il database nel tempo.
Aggiungi questi snippet subito prima della /* That's all, stop editing! Happy publishing. */ riga.
Limita le revisioni dei post
Per impostazione predefinita, WordPress memorizza un numero infinito di revisioni dei tuoi post. Un post aggiornato 50 volte avrà 50 copie nella tua wp_posts tabella del database, rallentando drasticamente le query al database.
// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );
Ottimizza l'intervallo di salvataggio automatico
WordPress esegue il salvataggio automatico ogni 60 secondi. Se hai più editor che lavorano contemporaneamente, questo sovraccarica il database. Rallentalo.
// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );
Svuota il cestino più velocemente
I post e i commenti eliminati rimangono nel database per 30 giorni. Riduci questo tempo per mantenere il database snello.
// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
3. Lo snippet principale functions.php anti-gonfiore
Il core di WordPress inietta una quantità enorme di script di supporto legacy, link di scoperta e stili inline nel tuo e per impostazione predefinita.
Per ottenere il massimo vantaggio informativo rispetto ai concorrenti, non ti diremo semplicemente di "usare un plugin di pulizia". Ecco il codice esatto per rimuovere chirurgicamente il gonfiore più comune di WordPress.
Nota: aggiungilo al tuo functions.php del tema child o a un mu-plugin.
/**
* The Ultimate WordPress Debloat Snippet
*/
add_action('init', function() {
// 1. Remove RSD, XMLRPC, and WLW links
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
add_filter('xmlrpc_enabled', '__return_false');
// 2. Remove WordPress version footprint (Security & Speed)
remove_action('wp_head', 'wp_generator');
// 3. Remove Shortlinks and REST API links from header
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'rest_output_link_wp_head');
// 4. Disable native Emojis (Saves 1 JS and 1 CSS HTTP Request)
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
// 5. Disable oEmbeds (If you don't embed external URLs automatically)
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
add_action('wp_footer', function() { wp_deregister_script('wp-embed'); });
});
/**
* 6. Remove Global Styles (WP 5.9+ Inline CSS Bloat)
*/
add_action('wp_enqueue_scripts', function() {
wp_dequeue_style('global-styles');
wp_dequeue_style('classic-theme-styles');
}, 100);
/**
* 7. Remove jQuery Migrate (If using modern themes/plugins)
*/
add_action('wp_default_scripts', function($scripts) {
if (!is_admin() && isset($scripts->registered['jquery'])) {
$script = $scripts->registered['jquery'];
if ($script->deps) {
$script->deps = array_diff($script->deps, ['jquery-migrate']);
}
}
});
/**
* 8. Throttle the Heartbeat API
* Prevents high CPU usage when leaving the WP Admin open
*/
add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60; // Throttle to 60 seconds
return $settings;
});
Cosa abbiamo appena ottenuto?
Aggiungendo il codice sopra, hai eliminato istantaneamente fino a 5-8 richieste HTTP non necessarie e rimosso dozzine di righe di CSS/JS inline da ogni singolo caricamento di pagina, il tutto senza installare un solo plugin.
4. Ottimizzazione dei media (il metodo difficile)
Plugin come Smush o Imagify sono convenienti, ma eseguono l'elaborazione delle immagini sul tuo server PHP, consumando risorse CPU.
Conversione manuale WebP/AVIF
Prima di caricare qualsiasi immagine su WordPress, passala attraverso un compressore esterno senza perdita di dati come Squoosh.app (di Google) o TinyPNG. Meglio ancora, convertile in .webp o .avif formati localmente prima del caricamento.
Sfrutta il caricamento lento nativo
Dalla versione 5.5 di WordPress, il caricamento lento nativo è integrato. WordPress aggiunge automaticamente loading="lazy" alle tue immagini. Non hai bisogno di un plugin di caricamento lento basato su JavaScript. Tuttavia, assicurati che le tue immagini "above the fold" (come il logo o l'immagine hero) NON abbiano questo attributo, poiché ritarderà il Largest Contentful Paint (LCP).
Puoi rimuovere il caricamento lento per la prima immagine su una pagina tramite functions.php:
add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
static $is_first_image = true;
if ( $is_first_image ) {
$attr['loading'] = 'eager'; // Force immediate load for LCP
$is_first_image = false;
}
return $attr;
}, 10, 3 );
5. Deframmentazione del database tramite phpMyAdmin
I plugin di ottimizzazione solitamente includono un pulsante "Pulisci database". Puoi farlo nativamente a livello di database.
- Accedi al pannello del tuo hosting e apri phpMyAdmin.
- Seleziona il tuo database WordPress.
- Scorri fino in fondo, seleziona Seleziona tutto.
- Nel menu a tendina "Con selezionati:", scegli Ottimizza tabella.
MySQL ricostruirà gli indici della tabella e recupererà lo spazio inutilizzato. Fallo manualmente una volta al mese.
Il verdetto
Ottimizzare WordPress senza plugin non significa solo risparmiare denaro sugli abbonamenti premium. È una filosofia di riduzione del debito tecnico. Ogni plugin che non installi è una vulnerabilità di sicurezza che non devi correggere, una tabella del database che non devi pulire e uno script PHP che il tuo server non deve eseguire.
Sposta il carico di lavoro sul server (PHP 8.1+, Nginx FastCGI), imponi disciplina nel tuo wp-config.php, e rimuovi il bloat principale usando il tuo functions.php. Il tuo Time to First Byte (TTFB) e i Core Web Vitals rifletteranno la differenza.



