WordPress rallentato da una funzione personalizzata: analisi del codice e ottimizzazione delle query MySQL
Documentazione tecnica di un intervento reale WpSupporto: richiesta ricevuta, analisi, diagnosi, intervento e verifiche finali.

Questo documento descrive un intervento realmente eseguito dal team WpSupporto. Per tutelare la privacy del cliente, alcuni dettagli identificativi possono essere stati anonimizzati senza alterare la natura tecnica del caso.
Panoramica rapida
Contesto dell’intervento
Il cliente ha contattato WpSupporto segnalando un rallentamento anomalo del proprio sito WordPress. Il problema non era costante: in alcuni momenti il sito risultava veloce, mentre in altre fasce orarie alcune pagine impiegavano diversi secondi per caricarsi.
Il sito non era completamente offline, ma l’instabilità delle prestazioni comprometteva la navigazione degli utenti e rendeva meno affidabili le richieste provenienti dai moduli di contatto. La criticità principale era l’imprevedibilità del problema: i normali controlli su cache e hosting non spiegavano da soli il comportamento osservato.
Contesto tecnico dell’ambiente
Problema segnalato
Il cliente riferiva tempi di caricamento molto variabili. La homepage si apriva quasi sempre correttamente, mentre alcune pagine interne, soprattutto quelle con contenuti filtrati o elenchi dinamici, risultavano lente in modo intermittente. In alcuni test il caricamento superava gli 8 secondi.
Il problema era comparso dopo alcune modifiche effettuate al tema child, nelle quali era stata aggiunta una funzione personalizzata per mostrare contenuti correlati in base a categorie e campi personalizzati. Il sito non mostrava errori visibili, ma il tempo di risposta del server risultava irregolare.
Analisi tecnica
Verifiche effettuate
- Controllo dei tempi di risposta server sulle pagine segnalate.
- Analisi del comportamento con cache attiva e cache disattivata.
- Verifica dei log PHP per escludere fatal error o warning ricorrenti.
- Analisi delle query database eseguite durante il caricamento delle pagine lente.
- Controllo del tema child e delle funzioni personalizzate aggiunte di recente.
- Verifica del numero di query generate dai blocchi dinamici presenti nelle pagine interessate.
Cause escluse
- Problema hosting escluso perché il server risultava stabile e non mostrava saturazione costante delle risorse.
- Problema cache escluso perché il rallentamento si presentava anche dopo svuotamento e rigenerazione controllata della cache.
- Errore PHP critico escluso perché non erano presenti fatal error nei log.
- Problema immagini escluso perché le pagine lente non dipendevano dal peso delle risorse multimediali.
- Conflitto plugin escluso dopo aver verificato che il carico anomalo proveniva da una funzione custom nel tema child.
Root Cause tecnica
La causa reale è stata individuata in una funzione personalizzata inserita nel tema child. La funzione aveva lo scopo di mostrare contenuti correlati in più sezioni del sito, ma eseguiva una nuova interrogazione al database per ogni blocco visualizzato nella pagina.
Il problema non era la singola query in sé, ma il modo in cui veniva richiamata. In presenza di più elementi dinamici, la funzione generava decine di query ripetitive, alcune delle quali utilizzavano parametri poco selettivi. Questo aumentava il tempo di elaborazione del database e rendeva il caricamento instabile nelle pagine con più contenuti correlati.
L’analisi ha mostrato che una delle query principali veniva eseguita più volte nella stessa richiesta e impiegava fino a diversi secondi nei momenti di maggiore carico. La cache frontend attenuava il problema solo parzialmente, ma non risolveva la causa, perché il carico veniva generato durante la costruzione dinamica della pagina.
Una funzione personalizzata del tema child generava query MySQL ripetitive e non ottimizzate per recuperare contenuti correlati. Il problema causava rallentamenti intermittenti sulle pagine dinamiche, soprattutto quando la cache veniva rigenerata o il contenuto non era ancora memorizzato.
Registro operativo dell’intervento
Ricezione della richiesta e raccolta delle pagine segnalate come lente dal cliente.
Avvio dei test di caricamento sulle pagine indicate e conferma della lentezza intermittente.
Verifica della cache e confronto tra pagine servite da cache e pagine generate dinamicamente.
Analisi dei log PHP e controllo dell’assenza di errori critici lato applicazione.
Monitoraggio delle query database eseguite durante il caricamento delle pagine lente.
Individuazione della funzione personalizzata nel tema child responsabile delle query ripetitive.
Riprogettazione della logica di recupero dei contenuti correlati per ridurre il numero di interrogazioni al database.
Applicazione della correzione e primo confronto dei tempi di risposta prima e dopo l’ottimizzazione.
Comunicazione al cliente dell’esito dell’analisi e conferma del miglioramento delle prestazioni sulle pagine interessate.
Intervento eseguito
- Creazione di un backup completo del sito prima di intervenire sul codice personalizzato del tema child.
- Analisi dettagliata della funzione responsabile del recupero dei contenuti correlati per individuare il numero effettivo di interrogazioni eseguite durante il caricamento della pagina.
- Riscrittura della logica di recupero dei dati per eliminare le interrogazioni duplicate al database.
- Ottimizzazione della query principale utilizzando parametri più selettivi e riducendo il numero di record analizzati.
- Introduzione di un sistema di memorizzazione temporanea dei risultati per evitare interrogazioni identiche nella stessa richiesta.
- Eliminazione di chiamate ripetute alle funzioni WordPress che generavano ulteriori query SQL non necessarie.
- Pulizia della cache applicativa e rigenerazione delle pagine dinamiche dopo la modifica del codice.
- Confronto dei tempi di risposta prima e dopo l’ottimizzazione per verificare il miglioramento ottenuto.
Evidenze tecniche
Il problema non era il server ma il codice personalizzato
Durante l’analisi è emerso che il server disponeva di risorse sufficienti e non presentava anomalie. La lentezza era generata da una funzione sviluppata nel tema child che eseguiva numerose interrogazioni ripetitive al database per costruire dinamicamente alcune sezioni della pagina.
L’ottimizzazione non ha richiesto alcun upgrade dell’hosting né l’installazione di ulteriori plugin. È stato invece necessario intervenire direttamente sul codice PHP, semplificando la logica applicativa e riducendo drasticamente il numero di query eseguite durante ogni richiesta. Questo approccio ha permesso di ottenere un miglioramento stabile senza aumentare la complessità del sito.
Verifiche finali
- Verifica del corretto caricamento della homepage.
- Controllo delle pagine che in precedenza risultavano più lente.
- Misurazione dei tempi di risposta del server dopo l’ottimizzazione.
- Verifica del corretto funzionamento delle sezioni dinamiche con contenuti correlati.
- Controllo dell’assenza di errori PHP nei log.
- Verifica della compatibilità con il sistema di cache già presente.
- Controllo del corretto funzionamento dell’area amministrativa WordPress.
- Test di navigazione da desktop e dispositivi mobili.
- Verifica dell’integrità del database dopo le modifiche.
- Monitoraggio delle prestazioni nelle ore successive all’intervento.
Risultato ottenuto
Prestazioni stabilizzate senza modificare l’infrastruttura
Dopo la riscrittura della funzione personalizzata il numero di interrogazioni al database è stato sensibilmente ridotto. Le pagine che presentavano rallentamenti intermittenti hanno iniziato a caricarsi in modo regolare e i tempi di risposta del server sono diventati costanti anche durante i momenti di maggiore traffico.
Rischi evitati
- Acquisto di un hosting più costoso senza risolvere la causa reale del problema.
- Peggioramento progressivo delle prestazioni con l’aumento dei contenuti pubblicati.
- Esperienza utente compromessa nelle pagine più visitate del sito.
- Riduzione delle performance percepite sia dagli utenti sia dai motori di ricerca.
Come prevenire il problema
- Analizzare sempre l’impatto delle funzioni personalizzate prima della pubblicazione in ambiente di produzione.
- Evitare interrogazioni duplicate al database durante la stessa richiesta.
- Utilizzare sistemi di cache applicativa quando il recupero dei dati è ripetitivo.
- Monitorare periodicamente il numero di query generate dalle pagine più complesse.
- Affidare le personalizzazioni WordPress a sviluppatori che conoscano il funzionamento interno del CMS e del database.
Cosa abbiamo imparato
Quando un sito WordPress rallenta, la causa non è necessariamente il server o il provider hosting. In molti casi il problema nasce direttamente dal codice applicativo, soprattutto quando vengono sviluppate funzioni personalizzate senza considerare il loro impatto sulle interrogazioni al database.
Questo intervento dimostra come un’analisi tecnica approfondita permetta di individuare problemi che non emergono durante una semplice navigazione del sito. Il frontend appariva funzionante, ma una parte del codice eseguiva un numero eccessivo di operazioni che aumentavano sensibilmente il tempo di risposta del server.
Ottimizzare WordPress significa spesso intervenire sulla qualità del codice piuttosto che aumentare le risorse hardware. Una funzione ben progettata può migliorare le prestazioni dell’intero sito senza modificare l’infrastruttura e senza introdurre ulteriori plugin.
Approfondimenti utili
Firma tecnica
Intervento documentato dal team WpSupporto
Caso studio ricostruito sulla base del processo operativo seguito durante l’intervento.
I dati identificativi del cliente, del dominio e dei componenti coinvolti sono stati anonimizzati per tutelarne la riservatezza.
Servizi correlati
Altri casi studio
Nuovi casi studio correlati saranno pubblicati prossimamente.
Tecnico autore
I casi studio WpSupporto sono ricostruiti sulla base del processo operativo seguito durante gli interventi tecnici. La documentazione viene curata dal team tecnico per garantire chiarezza, trasparenza e tutela della privacy del cliente.
Hai un problema simile su WordPress?
Se il tuo sito mostra errori, malfunzionamenti o problemi dopo un aggiornamento, puoi richiedere una prima analisi tecnica a WpSupporto.
Richiedi assistenza WordPress