El editor guarda mediante la REST API de WordPress. El mensaje significa que recibió algo distinto del JSON esperado: una página HTML de error, redirección, formulario de acceso, bloqueo del cortafuegos, aviso PHP o respuesta mal formada.
Conserva la petición REST fallida antes de cambiar enlaces permanentes o desactivar seguridad.
Inspecciona la petición de guardado
Abre Red, guarda una vez un borrador controlado y localiza /wp-json/wp/v2/.... Anota método, estado, cabeceras, cuerpo y duración.
Interpreta:
301/302 -> URL, HTTPS o redirección de acceso
401/403 -> nonce, capacidad o cortafuegos
404 -> REST, enlaces o ruta del servidor
500 -> error fatal PHP o aplicación
200 HTML -> caché, aviso o formulario de acceso
Oculta nonce, cookies y contenido no publicado.
Prueba el descubrimiento REST
Abre /wp-json/ como visitante y revisa el enlace de descubrimiento en la fuente. Los endpoints autenticados de entradas responderán de otro modo.
Usa Salud del sitio y WP-CLI si están disponibles. Que el índice REST sea público es normal; no bloquees todas las rutas como medida genérica.
Comprueba si falla solo un tipo de contenido o endpoint.
Alinea las URLs y HTTPS
home, siteurl y las URLs administrativas deben usar el host HTTPS canónico. Mezclar www, puertos o subdirectorios redirige las peticiones y rompe los nonces.
Configura bien la detección HTTPS tras un proxy. No confíes en cabeceras públicas arbitrarias.
Después de migrar, sustituye URLs con herramientas compatibles con serialización.
Repara enlaces y reglas del servidor
Guarda la estructura actual para regenerar .htaccess de Apache después de copiarlo. En Nginx WordPress no puede escribir la configuración; debe hacerlo el administrador.
Prueba /wp-json/ y un endpoint estándar.
No sustituyas reglas personalizadas completas; conserva idiomas, seguridad y subdirectorios.
Revisa el cortafuegos
Relaciona hora y ruta con Cloudflare, ModSecurity, hosting y plugins de seguridad. Algunas reglas bloquean cuerpos JSON o palabras del contenido.
Crea una corrección estrecha para REST autenticado. No desactives todo el cortafuegos.
Si lo provoca una cadena concreta, conserva una reproducción mínima sin datos privados.
Elimina contaminación de salida PHP
Los avisos impresos antes del JSON invalidan la respuesta. Mantén display_errors desactivado y registra en privado.
Busca echo, var_dump() o espacios después de cierre PHP en callbacks REST.
return rest_ensure_response( $data );
Devuelve datos o errores estructurados; no imprimas alrededor.
Comprueba caché y optimización
Las respuestas REST y de guardado no deben almacenarse públicamente. Revisa cabeceras del proxy, hosting y plugin.
Excluye rutas REST autenticadas y nonces de la caché completa. Purga tras corregir y prueba con caché caliente.
No retrases JavaScript principal del editor.
Revisa contraseñas de aplicación
Si falla solo una app o editor externo, prueba su autenticación REST. Las contraseñas de aplicación requieren HTTPS, usuario correcto y credencial activa.
Revoca y recrea únicamente la afectada; no compartas la contraseña principal. Confirma que las cabeceras Basic Authorization atraviesan el proxy y limita el rol.
Inspecciona soporte REST y esquema
Los tipos personalizados deben registrar show_in_rest y un controlador o esquema compatible. Los metadatos necesitan tipo, saneamiento y autorización.
register_post_meta( 'example', 'example_key', array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
) );
Añade permisos adecuados; no expongas metadatos privados para silenciar el editor.
Verifica operaciones del editor
Prueba crear, actualizar, autoguardar, revisar, insertar medios y publicar para tipos y roles relevantes. Confirma que REST sigue devolviendo JSON sin avisos PHP.
El mantenimiento recurrente debe vigilar REST 4xx o 5xx y probar después de cambios de dominio, SSL, cortafuegos o enlaces. El error está resuelto cuando el editor lee y escribe de forma fiable, no cuando el aviso desaparece una vez.