Qué importa primero: WordPress recibió la solicitud AJAX pero no pudo procesarla como una acción válida. La carga útil de la solicitud generalmente revela si la acción, nonce o los faltan los campos esperados.
Qué indica realmente este síntoma
admin-ajax.php ofrece muchas acciones no relacionadas, por lo que un error 400 en uno no significa que AJAX esté roto de forma global. El nombre de la acción, carga útil y respuesta que falla permiten distinguir el código del plugin de los problemas de caché, seguridad o tamaño de la petición.
Recopila pruebas antes de cambiar nada
- Captura la carga útil de la petición y Localiza el parámetro de acción.
- Compara el comportamiento de acceso y de salida porque utilizan diferentes ganchos.
- Lee el cuerpo de la respuesta y cualquier entrada del registro de PHP en la misma fecha y hora.
- Comprueba si una caché, un WAF o una capa de optimización alteraron el cuerpo de la petición POST o nonce.
Causas más habituales
- Gancho de acción ausente: El plugin envió una acción que no está registrada para el estado de autenticación actual.
- Nonce caducado: Un administrador en caché o una página frontal pueden enviar un token de WordPress que ya no acepta.
- Carga útil mal formada: JavaScript puede omitir campos requeridos o enviar JSON donde se esperan datos de formulario.
- Filtrado de seguridad: Un WAF puede eliminar o rechazar campos que parecen código, URLs o SQL.
Secuencia segura de diagnóstico y reparación
- Reproduce con cachés y la optimización del script bypassed para su propio sesión.
- Confirma que los ganchos PHP existen para wp_ajax_ y, cuando sea necesario, wp_ajax_nopriv_.
- Regenerar el nonce de una página sin cachéar y verificar que la solicitud lo envía bajo el nombre de campo esperado.
- Ajustar solo la probada WAF o regla de solicitud, a continuación, volver a probar la característica exacta.
Cómo distinguir entre las causas probables
No trates Gancho de acción ausente y Nonce caducado como causas equivalentes. El plugin envió una acción que no está registrada para el estado de autenticación actual. En cambio, un administrador en caché o una página frontal pueden enviar un token de WordPress que ya no acepta. Para distinguirlas, usa estas dos comprobaciones: Captura la carga útil de la petición y Localiza el parámetro de acción; y compara el comportamiento de acceso y de salida porque utilizan diferentes ganchos. Con esos datos podrás decidir si conviene aplicar la primera acción controlada —Reproduce con cachés y la optimización del script bypassed para su propio sesión— o si debes conservar el estado actual y ampliar la investigación.
En un sitio de WordPress en producción, repite la petición que falla mientras compruebas una página que funciona correctamente y el área de administración. Un fallo aislado en una ruta requiere un rollback más acotado que un problema que afecta a PHP, la base de datos o todas las peticiones. Documenta la fecha y hora exactas, la URL o transacción afectada, el último estado correcto conocido y cada cambio realizado durante el diagnóstico. Ese registro permite distinguir una reparación reproducible de una desaparición temporal del síntoma.
Qué no debes hacer
No haga una lista blanca de todas las solicitudes a admin-ajax.php. Ese endpoint puede realizar operaciones privilegiadas y debe permanecer protegido por la capacidad y las comprobaciones nonce.
Cómo verificar la reparación
- La acción original devuelve la respuesta prevista del plugin.
- El acceso registrado y el acceso registrado se comportan de acuerdo con el diseño de la característica.
- Las acciones inválidas no relacionadas con AJAX siguen siendo rechazadas.
Que el síntoma visible desaparezca no es suficiente. Cierra la incidencia solo cuando la acción original que fallaba, el recorrido de negocio relacionado y los registros relevantes confirmen que el problema ha desaparecido.