Se hai mai visto un errore “critico” in WordPress, una schermata bianca, un’area admin lenta o chiamate AJAX che falliscono senza un motivo chiaro, molto spesso il colpevole non è admin-ajax.php in sé… ma qualcosa che stampa output inatteso oppure un plugin che va in crash durante l’inizializzazione. In questa pagina ti spiego un test semplice, replicabile e “community-friendly” per diagnosticare il problema in modo pulito.
Obiettivo: verificare che wp-admin/admin-ajax.php risponda con JSON pulito e individuare subito se qualche plugin/tema sta “sporcando” l’output (es. Deprecated, Notice, echo accidentali) o causando errori in fase di bootstrap.
Cos’è admin-ajax.php e perché è così importante
In WordPress, admin-ajax.php è un endpoint usato per gestire richieste AJAX, cioè chiamate “in background” che aggiornano dati senza ricaricare la pagina. Lo usano plugin, temi, page builder (come Elementor), sistemi di sicurezza (come Wordfence) e anche plugin custom.
Quando tutto funziona, admin-ajax.php restituisce risposte pulite. Ma se qualcosa va storto, può succedere che:
il JSON venga “rotto” da output stampato prima della risposta (Deprecated/Notice/Warning);
un plugin vada in fatal error durante admin_init o hook simili;
la chiamata AJAX torni 200 ma con contenuto non valido (e in JS sembra “misteriosamente” tutto rotto).
Il nostro “AJAX Test”: cosa fa e cosa controlla
Abbiamo creato un piccolo plugin di test, pensato per essere: semplice, sicuro (solo admin), ripetibile e soprattutto utile per segnalazioni in community o in ticket.
Verifica 1: risposta JSON pulita
Il plugin fa una chiamata a admin-ajax.php con un’azione dedicata e controlla se la risposta è un JSON valido. Se il JSON è valido: bene. Se non è valido: quasi sempre c’è output “sporco” prima del JSON (es. righe “Deprecated:”).
Verifica 2: rilevamento output indesiderato
Il plugin cattura qualsiasi output involontario e mostra un’anteprima (garbage_preview), così sai immediatamente se e cosa sta rompendo le risposte AJAX.
Verifica 3: log per assistenza
Oltre all’output in pagina, il plugin scrive log (error_log / debug.log) con: versione PHP, versione WP, ID utente, e segnalazione “OUTPUT_GARBAGE_DETECTED” quando serve. È materiale perfetto da allegare a un ticket o a un post in community.
Come usare il test (passi rapidi)
Installa e attiva il plugin di test.
Vai in Bacheca → Strumenti → AJAX Debug Test.
Premi Esegui test AJAX.
Se vedi success: true → la pipeline AJAX è sana. Se vedi success: false e un garbage_preview → c’è output indesiderato.
Consiglio pratico: in produzione evita di mostrare errori a schermo. Anche quando non sono “fatal”, i Deprecated stampati in output possono rompere JSON e API.
Un messaggio Deprecated non è un errore fatale: indica che una funzione o un comportamento verrà rimosso in futuro. Il problema nasce quando viene stampato a schermo durante una risposta JSON o REST: la risposta non è più “pulita”, quindi il frontend non riesce a parsare correttamente i dati.
In questi casi la soluzione migliore è:
non mostrare errori a schermo (log sì, display no);
mantenere versioni PHP stabili e compatibili (es. 8.2/8.3);
aggiornare plugin/tema che non sono ancora “puliti” sulle versioni più nuove di PHP.
Segnalazioni e miglioramenti: rendiamolo perfetto insieme
Questo test nasce per essere utile anche ad altri: più feedback riceviamo, più lo rendiamo preciso. Se vuoi aiutarci a migliorarlo, puoi inviare una segnalazione con:
risultato del test (JSON completo);
versione PHP, WordPress e tema attivo;
lista dei plugin principali (Elementor/Yoast/Wordfence ecc.);
estratto di log con “OUTPUT_GARBAGE_DETECTED” se presente.
Obiettivo community: arrivare a una versione del test che, oltre a rilevare “garbage”, aiuti anche a capire chi lo produce: ad esempio indicando se il problema appare solo con un certo plugin attivo o in una certa versione di PHP.
Apri un ticket in assistenza (sezione Plugin WordPress)
Se vuoi che analizziamo il tuo caso in modo ordinato, apri un ticket in assistenza nella sezione Plugin WordPress. Nel messaggio, incolla questi dati:
Nota: se il sito è in “recovery mode”, indicacelo nel ticket: in quei casi la priorità è ripristinare accesso e stabilità prima di ottimizzare.
FAQ: domande frequenti sul test admin-ajax
Se il test è OK, posso escludere admin-ajax come causa?
Sì: se il test restituisce JSON pulito e non rileva output spazzatura, la pipeline AJAX è sana. In caso di problemi reali, la causa è più spesso un plugin specifico, un hook, o un fatal in fase di bootstrap.
Perché in alcuni casi vedo errori in admin-ajax e in altri no?
Perché può dipendere da versione PHP, plugin aggiornati/non aggiornati, cache, oppure impostazioni server (display_errors). Per questo il test include versioni e log: così si ragiona su dati oggettivi.
Meglio admin-ajax o REST API?
Per progetti moderni, spesso la REST API è più pulita e scalabile. Ma admin-ajax resta usato da tantissimi plugin: l’importante è che sia stabile e non “sporco”.
Cosa devo allegare in un ticket se il test fallisce?
Incolla l’output JSON del test, indica PHP/WP/tema e i plugin principali, e aggiungi un estratto di log con data/ora. Se c’è garbage_preview, incollalo: spesso basta quello per capire subito la causa.
Conclusione
Questo test nasce da un caso reale: errori critici, plugin che interagiscono tra loro e differenze tra versioni PHP. L’idea è semplice: prima rendiamo misurabile il problema, poi lo risolviamo con sicurezza. Se vuoi contribuire, invia una segnalazione o apri un ticket: miglioriamo il tool insieme.
Vuoi inserire mappe OpenStreetMap in WordPress con più pin, clustering numerico, popup HTML e asset locali (no CDN)? OSM Multi Pin Shortcode è un plugin leggero basato su Leaflet e MarkerCluster, pensato per performance, compatibilità e conformità alle regole della WordPress.org Plugin Directory. Indice
Multi-pin e cluster numerici: gestisci centinaia di marker con raggruppamenti chiari quando l’utente è zoom-out.
Popup HTML sanificati: formattazione ricca in sicurezza (wp_kses_post).
Asset locali: niente CDN esterni negli enqueue → review-friendly per WordPress.org e meno dipendenze di rete.
Compatibilità: funziona con editor a blocchi; in admin non carica script inutili per evitare conflitti di salvataggio.
API semplice: un unico shortcode con attributi chiari; supporto a markers_json per integrare dati da codice o ACF.
Installazione e requisiti
Carica la cartella del plugin in /wp-content/plugins/ e attivalo da Plugin → Installati.
Nel plugin sono previsti gli asset locali: Leaflet 1.9.4 e MarkerCluster 1.5.3. Assicurati che i file siano presenti in assets/leaflet/ e assets/cluster/ (con la cartella images di Leaflet).
Verifica che il tema includa <?php wp_head(); ?> e <?php wp_footer(); ?>.
Suggerimento: se usi tab/accordion, la mappa fa già invalidateSize() all’init, ma dai comunque un’altezza esplicita al contenitore.
Shortcode e attributi
Shortcode base: [osm_map ...]
Attributo
Tipo / Default
Descrizione
width
string, 100%
Larghezza contenitore (es. 100%, 800px).
height
string, 400px
Altezza mappa: deve essere esplicita.
zoom
int, 12
Livello di zoom iniziale (se è impostato anche center).
center
string, vuoto
Centro mappa lat,lng. Se omesso, fit automatico sui marker.
Attenzione: il template dei tiles deve mantenere le {graffe} ({z}, {x}, {y}).
Best practice performance e SEO
Asset locali: caricando Leaflet/MarkerCluster dal plugin eviti latency esterne e sei conforme alle policy della directory.
Height esplicita: imposta sempre height nello shortcode o via CSS, altrimenti la mappa potrebbe apparire “grigia”.
Cluster: usa cluster=1 e cluster_disable_at_zoom per mantenere l’interfaccia pulita in zoom-out.
Popup leggeri: evita HTML pesante o script inline nei popup; restano sanificati, ma è meglio tenerli snelli.
Tiles: il server OSM pubblico è perfetto per demo e siti piccoli; per carichi elevati valuta un provider dedicato/caching.
Troubleshooting
Mappa grigia (pin visibili ma sfondo assente) Quasi sempre l’URL dei tiles è stato “rotto” (le {graffe} sono state encodate). Usa il default del plugin o passa un template con {z}/{x}/{y} intatte.
“Aggiornamento fallito. La risposta non è una risposta JSON valida.” Evita qualunque output HTML in admin o durante richieste REST/AJAX. Il plugin carica gli script solo nel front-end e mostra eventuali notice solo nella schermata Plugin.
Non vedo il pin di default Assicurati che in assets/leaflet/ ci sia la cartella images con marker-icon.png, marker-icon-2x.png, marker-shadow.png.
Consiglio Se usi tab/accordion, la mappa viene inizializzata con invalidateSize() per forzare il ricalcolo quando diventa visibile.
Conformità WordPress.org e licenze
Nessun CDN negli enqueue: gli asset sono serviti dal plugin → niente “OffloadedContent”.
Licenze: includi i file LICENSE di Leaflet (BSD-2-Clause) e MarkerCluster (MIT) dentro la cartella assets.
Sicurezza: popup sanificati con wp_kses_post, nessuna telemetria.
Roadmap, changelog e supporto
Roadmap
Blocco Gutenberg “OSM Map” con UI per aggiungere marker.
In meno di un minuto hai una mappa pulita, veloce e con pin raggruppati quando serve. 🚀
What Time Is It: il plugin WordPress che ti mostra sempre l’ora giusta (e nel fuso orario che vuoi)
Chi lavora con WordPress – che sia uno sviluppatore, un copywriter, un editor o un semplice appassionato – sa quanto può essere importante avere il tempo sotto controllo. Quando si lavora a progetti per clienti internazionali, oppure si pubblicano articoli su base programmata, o ancora si fa parte di un team distribuito in più parti del mondo, il riferimento temporale diventa fondamentale.
Ed è proprio da questa esigenza che nasce What Time Is It, un plugin WordPress semplice ma geniale, progettato per portare un orologio digitale preciso e personalizzabile direttamente nella tua area di lavoro. In questo articolo ti racconterò cosa fa, come funziona e perché dovresti installarlo subito.
Un orologio nel posto giusto: l’editor WordPress
What Time Is It aggiunge un orologio digitale direttamente nella sidebar laterale dell’editor Gutenberg. Mentre stai scrivendo un articolo o lavorando su una pagina, il plugin mostra in tempo reale l’ora del fuso orario che hai scelto. Non solo: puoi cambiarlo in qualsiasi momento usando il campo di selezione rapido integrato.
Questo approccio è perfetto per:
Chi pubblica contenuti in orari strategici.
Chi lavora con collaboratori o clienti all’estero.
Chi desidera un riferimento orario chiaro e sempre visibile, senza dover aprire una nuova scheda del browser.
Fluido, locale, senza API esterne
Uno dei punti di forza di questo plugin è che non usa alcuna API esterna. Non ci sono dipendenze da servizi come worldtimeapi.org o simili, che spesso causano problemi di CORS o malfunzionamenti offline. What Time Is It si basa esclusivamente su JavaScript nativo e sfrutta la potenza di toLocaleTimeString() con supporto per i fusi orari, quindi:
Funziona offline
È istantaneo e fluido
È leggero (zero chiamate di rete)
È affidabile nel tempo
Il tutto aggiornato in tempo reale, ogni secondo.
Scegli il fuso orario che ti serve
L’interfaccia del plugin include un campo input con datalist che permette di cercare e selezionare tra centinaia di fusi orari supportati dal browser. Basta iniziare a scrivere (es. “New York”, “Tokyo”, “Europe/Rome”) e l’opzione corretta sarà suggerita automaticamente.
Il plugin si occupa di:
Normalizzare la scrittura (maiuscole, spazi, slash).
Verificare la validità del fuso orario.
Salvare la scelta nel profilo utente, così che venga mantenuta anche nelle sessioni future.
Design semplice, efficace, integrato
Il box visualizzato nella sidebar è essenziale e chiaro. Mostra:
Il nome del fuso orario selezionato.
L’orologio digitale ben visibile, in stile “Courier” per un tocco retro-digitale.
Il campo per cambiare fuso orario.
Il plugin eredita lo stile grafico del backoffice WordPress e si adatta perfettamente al flusso di lavoro. Niente popup invasivi, niente pagine di configurazione: è tutto lì, dove serve, quando serve.
Installazione: due click e via
Il plugin è distribuito in formato .zip pronto all’uso. L’installazione è semplice:
Apri qualsiasi post o pagina nell’editor WordPress per vederlo in azione nella sidebar.
Non c’è bisogno di configurazioni aggiuntive. Funziona subito.
Perfetto per team remoti, agenzie e blogger internazionali
“What Time Is It” è ideale per tutte quelle situazioni in cui il tempo (e il fuso) conta:
Redazioni con redattori in paesi diversi.
Team che lavorano su Slack, GitHub o Google Meet e vogliono un orario di riferimento direttamente in WordPress.
Siti con contenuti programmati per la pubblicazione automatica.
Agenzie che gestiscono siti di clienti internazionali.
E perché no, è utile anche per chi vuole semplicemente un orologio sempre sott’occhio mentre lavora!
Leggero e sicuro
Il plugin è compatibile con:
WordPress 6.6 o superiore
PHP 7.4 o superiore
Ogni output HTML è gestito in modo sicuro con funzioni come esc_html() e esc_attr(). Gli input dell’utente sono normalizzati e sanitizzati. Il codice è interamente caricato in ambienti admin, quindi non impatta sul frontend.
Open source e migliorabile
What Time Is It è pensato per essere semplice, ma può essere esteso facilmente. Alcune possibili feature future:
Supporto a più fusi orari contemporanei (es. confronto NYC vs Tokyo).
Tema chiaro/scuro dell’orologio.
Integrazione con il pannello utente per impostare un fuso orario globale.
È perfetto anche come base per chi vuole sviluppare plugin admin più complessi o introdurre elementi di UX nel backend.
Conclusione
Semplice, leggero, utile: What Time Is It è uno di quei plugin che potresti non pensare di installare subito… ma una volta provato, diventa parte naturale del tuo flusso di lavoro.
Ti aiuta a mantenere il tempo sotto controllo, senza fronzoli, senza rischi, e soprattutto senza dipendere da servizi esterni.
Scaricalo, installalo e… guarda che ore sono 🕒
Gestisci Consenso
Per fornire le migliori esperienze, utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Il consenso a queste tecnologie ci permetterà di elaborare dati come il comportamento di navigazione o ID unici su questo sito. Non acconsentire o ritirare il consenso può influire negativamente su alcune caratteristiche e funzioni.
Funzionale
Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici.L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.