+39 327 7527520 info@renatocantarella.it

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)

  1. Installa e attiva il plugin di test.
  2. Vai in Bacheca → Strumenti → AJAX Debug Test.
  3. Premi Esegui test AJAX.
  4. 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.

define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);define('WP_DEBUG_DISPLAY', false);@ini_set('display_errors', 0);

Quando un “Deprecated” diventa un problema reale

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:

  • URL del sito (o ambiente staging)
  • Risultato del test (output JSON)
  • PHP / WP / Tema
  • Plugin coinvolti (es. Elementor, Wordfence, Yoast, Premium Addons…)
  • Log (debug.log o error_log) con data/ora

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.