Query Monitor plugin: integrazione
Query Monitor è il plugin di debug WordPress più usato dai developer: profila query, hook, HTTP request, redirect. WP Error Monitor lo integra rendendo i dati raccolti accessibili centralmente nel CRM, anche quando il plugin è disattivato per gli utenti normali.
Cosa offre Query Monitor
Una toolbar admin con tab dettagliate: Queries (tutte le SQL), Hooks (azioni e filtri), HTTP Requests (wp_remote_get/post), Redirects, Languages, Conditionals, Scripts/Styles. Per developer è indispensabile, per visibilità continua su produzione è troppo pesante.
Come integrare con WP Error Monitor
L’agent espone un'hook 'wpem_collect_qm_data' che, se Query Monitor è attivo, importa i collector di QM e li serializza nei eventi. Così' ogni evento di errore include un riassunto: numero query, tempo totale DB, HTTP request in pagina, hook con eccezione. Tutto questo senza modificare Query Monitor.
Configurazione consigliata
Installa Query Monitor su staging e dev (visibile a tutti). In produzione installalo ma usa QM_HIDE_FROM_USERS=true e visibility 'admin only'. Imposta WPEM_INCLUDE_QM_DATA=true in WP Error Monitor settings. Così' i dati QM arrivano sulla dashboard CRM senza esposizione utenti.
Profiling hooks WordPress
Query Monitor identifica hook lenti: quale callback ha consumato più tempo durante 'init' o 'wp_loaded’. Pattern comuni: plugin che fanno wp_remote_get sincroni in init (blocca rendering), plugin che caricano tutti i settori in init invece di lazy load. WP Error Monitor cattura anche questo se WPEM_TRACE_HOOKS=true, con threshold 100ms su singolo hook. Così' identifichi i 'bad citizen' del codebase.
Profiling assets (Scripts/Styles)
QM mostra ogni JS/CSS caricato con dimensione, source plugin, condition (dove caricato). Spesso scopri che un plugin admin-only carica JS anche su frontend, oppure che hai 5 versioni di Font Awesome. Ottimizzazione tipica: wp_dequeue_script in pagine dove non serve. WP Error Monitor non duplica questa funzione, ma può inviare metriche aggregate (numero asset per pagina, peso totale) al CRM via WPEM_TRACK_ASSETS=true.
Performance budget per pagina
Definisci budget di performance per ogni tipologia di pagina: homepage <500 query, <2s tempo, <2MB asset; product page <300 query, <1.5s, <1.5MB; admin dashboard <1000 query, <3s. Query Monitor rileva quando superi il budget, WP Error Monitor invia alert. Così' performance regression è identificata prima che impatti utenti. La cultura 'performance is feature' richiede metriche oggettive: senza budget, le pagine peggiorano lentamente fino a problema acuto. Setup budget in WP Error Monitor: 'Impostazioni > Performance Budgets > Per page type'.
Lighthouse integrato in monitoring
Google Lighthouse misura Core Web Vitals (LCP, FID, CLS) e altre metriche perf/SEO/accessibility. WP Error Monitor integra Lighthouse via puppeteer su pagine principali ogni 24h: genera score per ogni pagina e segnala regression. I dati sono storici, così vedi trend nel tempo. Score target: Lighthouse Performance >90 per pagine importanti, Accessibility 100, SEO >95. Quando score scende, evento WPEM con dettaglio metriche peggiorate. Così' performance è tracciata automaticamente senza dover lanciare Lighthouse manualmente.
Integrazione completa Query Monitor + WP Error Monitor
L’integrazione completa Query Monitor + WP Error Monitor ti dà il best of both: QM offre deep-dive interattivo su singola pagina (perfetto per debug attivo), WPEM offre osservabilità continua passiva (perfetto per detection automatica). Setup ideale: QM installato in tutti gli ambienti ma visible solo admin in prod (QM_HIDE_FROM_USERS=true), WPEM agent attivo sempre, opzione WPEM_INCLUDE_QM_DATA=true che importa dati QM negli eventi WPEM. Così' apri evento errore in dashboard e vedi anche dati QM correlati: query, hook, asset. Tempo da evento a root cause si dimezza.
Workflow di sviluppo con Query Monitor
Adotta Query Monitor come step obbligatorio del workflow sviluppo locale: prima di ogni commit, apri la pagina che hai toccato e verifica che query count e tempo non siano peggiorati rispetto al baseline. Così' eviti regression performance entrante in PR.
Note finali
Profiling continuativo dei tuoi siti WordPress richiede investimento iniziale di setup ma genera ritorno significativo nel medio-lungo periodo: ottimizzazioni mirate basate su dati reali invece di guess.
Procedura passo-passo
- Installa Query Monitor da repository ufficiale.
- In wp-config.php aggiungi: define('QM_HIDE_SELF', true) per produzione.
- Aggiungi WPEM_INCLUDE_QM_DATA=true.
- Verifica che WP Error Monitor catturi i dati QM provando un'errore.
- Apri evento e controlla che la sezione 'Query Monitor Data' sia popolata.
- In dashboard usa filtri 'qm.queries_count > 50' per identificare pagine con N+1 query.
- Ottimizza le N+1 con pre-fetch o cache layer.
- Apri Query Monitor in pagina lenta e vai a tab Hooks.
- Identifica hook sopra 100ms e fixa callback.
Errori comuni e come risolverli
- QM Data vuoto in evento: QM non è installato o non attivo per quel sito: verifica plugin status.
- Conflitto Query Monitor con cache: Plugin cache che bypassa wp-bootstrap: configura QM_DISABLE_CACHE.
- Toolbar QM visibile a utenti: Imposta QM_HIDE_FROM_USERS e capability 'manage_options'.
- Hook timing non disponibile: WPEM_TRACE_HOOKS richiede companion plugin recente: aggiorna.
- Asset duplicati ostinatamente: Plugin che usa wp_enqueue_script senza handle: fork e patch.
Domande frequenti
D: Query Monitor rallenta il sito?
R: Sì, tipicamente 5-15% in più su page load. Usa solo admin in produzione.
D: Posso disattivare QM e usare solo WP Error Monitor?
R: Sì, WPEM_TRACE_SLOW_QUERIES funziona indipendentemente.
D: QM funziona con object cache (Redis)?
R: Sì, traccia anche operazioni cache: utile per debug cache misses.
D: QM impatta production?
R: Sì, tienilo admin-only e disabilita per altri ruoli.
D: Posso usare QM con cache plugin?
R: Sì, ma cache page potrebbe nascondere alcune chiamate: profila admin pages.
Hai bisogno di aiuto?
Se vuoi affidare il monitoraggio WordPress al team di G Tech Group, scrivici tramite il modulo di contatto.