{"id":598,"date":"2026-07-27T10:00:00","date_gmt":"2026-07-27T08:00:00","guid":{"rendered":"https:\/\/aarkly.com\/?p=598"},"modified":"2026-08-08T12:25:09","modified_gmt":"2026-08-08T10:25:09","slug":"wordpress-ajax-admin-ajax-vs-rest-api","status":"publish","type":"post","link":"https:\/\/aarkly.com\/it\/wordpress-ajax-admin-ajax-vs-rest-api\/","title":{"rendered":"WordPress AJAX: admin-ajax vs REST API \u2014 quale usare e quando"},"content":{"rendered":"<p class=\"wp-block-paragraph\">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.<\/p><p class=\"wp-block-paragraph\">Questa guida copre le differenze tra admin-ajax e la REST API e quando usare ciascun approccio nei tuoi plugin e temi.<\/p><h2 class=\"wp-block-heading\">Come funziona admin-ajax.php<\/h2><p class=\"wp-block-paragraph\">admin-ajax.php \u00e8 il gestore AJAX originale di WordPress. Carica l'intero ambiente WordPress \u2014 plugin, tema, connessioni al database \u2014 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 \u00e8 lento perch\u00e9 carica l'intero stack di WordPress.<\/p><p class=\"wp-block-paragraph\">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.<\/p><h2 class=\"wp-block-heading\">Come la REST API gestisce le richieste<\/h2><p class=\"wp-block-paragraph\">La REST API di WordPress gestisce le richieste in modo pi\u00f9 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\u00f9 intuitiva per lo sviluppo frontend moderno.<\/p><p class=\"wp-block-paragraph\">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.<\/p><h2 class=\"wp-block-heading\">Quando usare admin-ajax.php<\/h2><p class=\"wp-block-paragraph\">admin-ajax.php \u00e8 ancora la scelta giusta per le richieste AJAX lato admin \u2014 operazioni che avvengono all'interno dell'interfaccia amministrativa di WordPress. Queste richieste sono fatte da utenti autenticati con privilegi di amministratore, quindi la penalit\u00e0 di performance \u00e8 meno preoccupante. admin-ajax \u00e8 anche pi\u00f9 semplice per operazioni banali che non necessitano della struttura di un endpoint REST API completo.<\/p><p class=\"wp-block-paragraph\">Usa admin-ajax per: interazioni con le pagine delle impostazioni di amministrazione, operazioni di modifica rapida e aggiornamenti dei widget della dashboard.<\/p><h2 class=\"wp-block-heading\">Quando utilizzare la REST API<\/h2><p class=\"wp-block-paragraph\">La REST API \u00e8 la scelta migliore per le richieste AJAX frontend effettuate dai visitatori. \u00c8 pi\u00f9 veloce, pi\u00f9 scalabile e segue le convenzioni moderne dello sviluppo web. Utilizza la REST API per: caricare pi\u00f9 articoli allo scorrimento, inviare moduli di contatto, aggiornare le quantit\u00e0 del carrello in WooCommerce e qualsiasi operazione AJAX che possa essere chiamata frequentemente.<\/p><p class=\"wp-block-paragraph\">La REST API consente anche configurazioni headless di WordPress, integrazioni con app mobili e accesso API di terze parti \u2014 funzionalit\u00e0 che admin-ajax non supporta.<\/p><h2 class=\"wp-block-heading\">Considerazioni sulla sicurezza<\/h2><p class=\"wp-block-paragraph\">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.<\/p><p class=\"wp-block-paragraph\">Registra i tentativi AJAX falliti. Gli attacchi di forza bruta spesso prendono di mira gli endpoint AJAX perch\u00e9 bypassano la pagina di login normale.<\/p><h2 class=\"wp-block-heading\">Il punto fondamentale<\/h2><p class=\"wp-block-paragraph\">Per lo sviluppo di nuovi plugin, usa la REST API per impostazione predefinita. \u00c8 pi\u00f9 veloce, pi\u00f9 sicura e pi\u00f9 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 \u00e8 il percorso consigliato per la funzionalit\u00e0 AJAX di WordPress.<\/p>","protected":false},"excerpt":{"rendered":"<p>Una guida pratica all'AJAX di WordPress, che confronta admin-ajax.php con la REST API e quando usare ciascuna per le funzionalit\u00e0 frontend e admin del tuo plugin.<\/p>","protected":false},"author":3,"featured_media":1230,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_primary_source":"","visibility_scope":"","ai_summary":"","ai_intent":"","ai_related_resources":"","ai_priority":0,"ai_entity_type":"","ai_is_based_on":"","ai_citations":"","ai_mentions":"","ai_speakable_selector":"","ai_chunk_hints":"","footnotes":""},"categories":[7,6],"tags":[44,27,35],"ai_visibility":[],"class_list":["post-598","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development","category-wordpress","tag-api-first","tag-developer-to-founder","tag-saas"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/comments?post=598"}],"version-history":[{"count":2,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/598\/revisions"}],"predecessor-version":[{"id":1312,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/598\/revisions\/1312"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/media\/1230"}],"wp:attachment":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/media?parent=598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/categories?post=598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/tags?post=598"},{"taxonomy":"ai_visibility","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/ai_visibility?post=598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}