AJAX y REST API en plugins: interacción moderna con seguridad
Diseñas endpoints y acciones asíncronas para tu plugin, eligiendo entre `admin-ajax` y REST según contexto, con permisos, nonces y respuestas limpias.
Un plugin moderno no debería recargar página completa para tareas simples como validar una regla, previsualizar un aviso o limpiar caché.
En esta lección implementarás interacción asíncrona usando dos vías: `admin-ajax.php` y REST API.
Aprenderás cuándo conviene cada una, cómo proteger endpoints y cómo devolver respuestas consistentes para frontend/admin.
El objetivo es que tu plugin sea rápido en UX, pero igual de sólido en seguridad.
- Ambos enfoques son válidos; la decisión depende del flujo y de la arquitectura.
- `admin-ajax` encaja bien en acciones internas de admin rápidas y acotadas.
- REST API es ideal cuando quieres endpoints reutilizables, desacoplados y fáciles de consumir desde editor, frontend o integraciones externas.
- Caso real: un plugin empezó con AJAX para todo y luego migrar a móvil/integraciones fue caro; diseñar endpoints REST desde el inicio habría reducido retrabajo.
- Admin interno rápido: AJAX puede bastar.
AJAX clásico vs REST: elige por contexto, no por costumbre
Ambos enfoques son válidos; la decisión depende del flujo y de la arquitectura.
`admin-ajax` encaja bien en acciones internas de admin rápidas y acotadas.
REST API es ideal cuando quieres endpoints reutilizables, desacoplados y fáciles de consumir desde editor, frontend o integraciones externas.
Caso real: un plugin empezó con AJAX para todo y luego migrar a móvil/integraciones fue caro; diseñar endpoints REST desde el inicio habría reducido retrabajo.
- Admin interno rápido: AJAX puede bastar.
- API reutilizable y escalable: REST suele ser mejor.
- Seguridad obligatoria en ambos: permisos + nonce/cookies.
Diseña rutas REST con contrato claro
Un endpoint profesional define método, payload, validación y permisos explícitos.
Registra rutas en `rest_api_init`, define métodos (`GET/POST`) y valida parámetros de entrada.
Usa `permission_callback` con capacidades concretas; no dejes endpoints write abiertos por defecto.
Responde con estructuras estables (`status`, `data`, `message`) para facilitar consumo en frontend.
AJAX en admin: acciones rápidas y controladas
Para tareas internas simples, `wp_ajax_*` sigue siendo práctico.
Registra acción con `wp_ajax_{action}` y verifica nonce con `check_ajax_referer`.
Devuelve respuestas con `wp_send_json_success` o `wp_send_json_error` para mantener consistencia.
No olvides comprobar capacidades dentro del callback, incluso si el botón está oculto en la UI.
Caso real: endpoint expuesto sin permisos
Un endpoint funcional no es suficiente; debe ser seguro por diseño.
En una intranet, un endpoint de plugin devolvía datos de configuración sin `permission_callback` real. Resultado: usuarios sin permiso accedían a información sensible.
La corrección incluyó permisos estrictos, validación de parámetros y minimización de campos devueltos.
Aprendizaje clave: define tu modelo de autorización antes de publicar la ruta.