WordPress offre due modi per gestire le richieste AJAX: il tradizionale admin-ajax.php e la moderna REST API. Entrambi permettono di inviare e ricevere dati senza ricaricare la pagina, ma hanno caratteristiche di performance, modelli di sicurezza e casi d'uso diversi.
Questa guida copre le differenze tra admin-ajax e la REST API e quando usare ciascun approccio nei tuoi plugin e temi.
Come funziona admin-ajax.php
admin-ajax.php è il gestore AJAX originale di WordPress. Carica l'intero ambiente WordPress — plugin, tema, connessioni al database — per ogni richiesta, anche se la funzione AJAX deve solo fare qualcosa di semplice come aggiornare una singola opzione. Questo ha portato a una reputazione di performance meritata: admin-ajax.php è lento perché carica l'intero stack di WordPress.
Per usare admin-ajax, crea un file JavaScript che invia una richiesta POST a /wp-admin/admin-ajax.php con un parametro 'action'. Aggiungi una funzione handler PHP e registrala con wp_ajax_{action} per gli utenti con login e wp_ajax_nopriv_{action} per gli ospiti.
Come la REST API gestisce le richieste
La REST API di WordPress gestisce le richieste in modo più efficiente di admin-ajax. Gli endpoint REST caricano solo le parti di WordPress necessarie per la richiesta specifica. La REST API usa anche metodi HTTP standard (GET, POST, PUT, DELETE) e restituisce risposte JSON strutturate, rendendola più intuitiva per lo sviluppo frontend moderno.
Registra un endpoint REST personalizzato con register_rest_route(). Definisci la rotta, i metodi HTTP, le callback di autorizzazione e la funzione di gestione. La REST API gestisce automaticamente la formattazione dei dati, le intestazioni di risposta e le risposte di errore.
Quando usare admin-ajax.php
admin-ajax.php è ancora la scelta giusta per le richieste AJAX lato admin — operazioni che avvengono all'interno dell'interfaccia amministrativa di WordPress. Queste richieste sono fatte da utenti autenticati con privilegi di amministratore, quindi la penalità di performance è meno preoccupante. admin-ajax è anche più semplice per operazioni banali che non necessitano della struttura di un endpoint REST API completo.
Usa admin-ajax per: interazioni con le pagine delle impostazioni di amministrazione, operazioni di modifica rapida e aggiornamenti dei widget della dashboard.
Quando utilizzare la REST API
La REST API è la scelta migliore per le richieste AJAX frontend effettuate dai visitatori. È più veloce, più scalabile e segue le convenzioni moderne dello sviluppo web. Utilizza la REST API per: caricare più articoli allo scorrimento, inviare moduli di contatto, aggiornare le quantità del carrello in WooCommerce e qualsiasi operazione AJAX che possa essere chiamata frequentemente.
La REST API consente anche configurazioni headless di WordPress, integrazioni con app mobili e accesso API di terze parti — funzionalità che admin-ajax non supporta.
Considerazioni sulla sicurezza
Entrambi i metodi AJAX richiedono una sicurezza adeguata. Per admin-ajax, usa i nonce con wp_create_nonce() e verificali con check_ajax_referer(). Per la REST API, usa i callback di autorizzazione integrati di WordPress e la verifica dei nonce tramite l'header X-WP-Nonce. Non fidarti mai dell'input utente in nessuno dei due metodi: sanifica e valida tutti i dati ricevuti dalle richieste AJAX.
Registra i tentativi AJAX falliti. Gli attacchi di forza bruta spesso prendono di mira gli endpoint AJAX perché bypassano la pagina di login normale.
Il punto fondamentale
Per lo sviluppo di nuovi plugin, usa la REST API per impostazione predefinita. È più veloce, più sicura e più allineata con le pratiche di sviluppo web moderne rispetto a admin-ajax.php. Usa admin-ajax solo per operazioni lato admin che non necessitano della struttura della REST API. Entrambi gli approcci sono pienamente supportati, ma la REST API è il percorso consigliato per la funzionalità AJAX di WordPress.




