La API de REST encontró un error
Algo respondió la solicitud que no era WordPress, o contestó con HTML. El editor deja de funcionar primero, porque depende de la API para todo.
The REST API encountered an error: The REST API request failed due to an error.
Solicitar una ruta REST directamente y ver lo que regresa. JSON significa que la API está viva y el problema es la autenticación; una página de error HTML significa algo delante de WordPress interceptó la ruta antes de que PHP respondiera.
Las causas más probables primero.
Revisa la lista en orden. Cada comprobación permite confirmar o descartar una causa antes de hacer cambios: las soluciones son distintas y adivinar cuesta más que ejecutar un comando.
| Causa | Cómo comprobarlo | Solución |
|---|---|---|
| Un plugin de seguridad o WAF bloquea la ruta | La solicitud devuelve HTML o un 403 de algo que no es WordPress, y el bloque se ha registrado por el plugin o cortafuegos en lugar de por WordPress. | Permitir /wp-json/ para usuarios autenticados. Reglas escritas para detener la enumeración del usuario frecuentemente bloquean todo el espacio de nombres en lugar del punto final al que estaban dirigidos. |
| Permalinks están rotos así que la ruta nunca resuelve | La ruta bonita 404s mientras que la forma de búsqueda responde correctamente. Esa diferencia lo aísla para reescribir reglas. | La ruta REST es una reescritura como cualquier otra, por lo que desaparece cuando están estancadas. |
| El encabezado de Autorización está despojado | Las rutas no autenticadas funcionan y las autenticadas informan que no se ha iniciado sesión, aunque lo estés. | Pase el encabezado de Autorización a PHP en el servidor web. Las configuraciones de estilo CGI lo dejan por defecto, y las contraseñas de aplicaciones dejan de funcionar completamente cuando lo hacen. |
| Un plugin emite salida antes de JSON | La respuesta es válida JSON con algo delante de ella —un aviso, una línea en blanco estrado— que lo hace inparable. | Encontrar el plugin de impresión temprano. La misma salida de la calle generalmente también rompe los alimentos y produce una advertencia de la cabeza-ya-enviada en otro lugar. |
Solución paso a paso.
Los comandos requieren WP-CLI y acceso a la consola. Si no los tienes, cada paso explica cómo hacer lo mismo desde el panel o por SFTP.
Pregunte a la API para el índice
Esta ruta no requiere autenticación, así que cualquier otra cosa que JSON sea la respuesta.
curl -sS -i https://example.com/wp-json/ | head -n 20
Comparen la routing bonita y simple
Si el segundo funciona y el primero no, reescribir reglas es el problema y nada más necesita pruebas.
curl -sS -o /dev/null -w '%{http_code}\n' 'https://example.com/wp-json/wp/v2/types' curl -sS -o /dev/null -w '%{http_code}\n' 'https://example.com/?rest_route=/wp/v2/types'Recompilar las reglas de reescritura
Barato, seguro y arregla una parte sorprendente de estos.
wp rewrite flush --hard
Confirme que el encabezado de Autorización sobrevive
Añadir esto al servidor web o .htaccess cuando las rutas autenticadas son las únicas que fallan.
# .htaccess SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 # nginx + fastcgi fastcgi_param HTTP_AUTHORIZATION $http_authorization;
plugins de insectos si todavía está fallando
Prueba la ruta entre cada desactivación en lugar de al final, por lo que el plugin que lo arregla es inequívoco.
wp plugin deactivate --all curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/wp-json/
De esto se encarga la plataforma.
Nada se encuentra entre la solicitud y WordPress que reescribe o inspecciona /wp-json/, por lo que la ruta llega a PHP intacto y el encabezado llega con ella — las dos causas que cuenta la mayoría de estas. reglas Permalink son parte de la configuración propia del sitio en lugar de un archivo compartido otros sitios también editar, por lo que no van a parar cuando algo no relacionado se implementa.
Preguntas frecuentes.
¿Puedo desactivar la API REST?
El editor dice “Updating failed” — ¿es ese el mismo problema?
¿Por qué funciona cuando estoy conectado pero no me he conectado?
¿Es un 404 en /wp-json / diferente de un 403?
Si el problema era otro.
Estos errores pueden parecerse en el navegador.