
🔒 Cómo desactivar la API REST en WordPress: 4 formas 2026
¿Qué es la API REST y por qué desactivarla
La API REST en WordPress es una interfaz integrada a través de la cual aplicaciones externas leen y modifican datos del sitio. Las solicitudes van a /wp-json/, la respuesta llega como JSON. Apareció en WordPress 4.7 y desde entonces está activada por defecto en todos los sitios.
Esto es conveniente para desarrolladores: aplicaciones móviles, arquitectura headless, integraciones con servicios de terceros. Pero si usted no usa nada de lo anterior, una API REST abierta sigue siendo un agujero. Cero beneficio, riesgos reales.
Amenazas concretas:
- Enumeración de usuarios. A través de
/wp-json/wp/v2/userscualquiera puede obtener una lista de nombres de usuario. Siguiente paso, fuerza bruta de contraseñas. - Raspado de contenido. Las entradas a través de
/wp-json/wp/v2/postsse extraen automáticamente y se republican en otros sitios. - Carga innecesaria. Cada solicitud REST pasa por el ciclo completo de WordPress. Mil bots por minuto y el sitio se cae.
A continuación, cuatro formas de bloquear la API REST: desde un plugin de un clic hasta un bloqueo a nivel de servidor. Elija la que se ajuste a su situación.
💡 Resumen rápido:
- Instale el plugin Disable WP REST API: más de 30 000 instalaciones activas, sin ajustes, funciona inmediatamente tras la activación.
- Configure la restricción en Solid Security: si ya tiene un plugin de seguridad en el sitio, el interruptor de la API REST está en la sección Avanzado.
- Añada código a functions.php: para quienes no quieren un plugin separado para un solo filtro, un fragmento que usa
rest_authentication_errors. - Añada una regla a.htaccess: un bloqueo a nivel del servidor Apache, un método drástico sin excepciones.
Método 1: Plugin Disable WP REST API, un clic
El método más simple y seguro. El plugin Disable WP REST API en WordPress.org hace exactamente una cosa: cierra la API REST para cualquiera que no haya iniciado sesión en el área de administración. Los usuarios autenticados trabajan como siempre, el editor de bloques, otros plugins, todo funciona.
Instalación: Plugins → Añadir nuevo, busque "Disable WP REST API", instale y active. El plugin pesa 4 KB y empieza a funcionar de inmediato. No hay ajustes.
Verificación: cierre sesión en el área de administración y abra https://вашсайт.ru/wp-json/ en su navegador. Verá el mensaje: {"code":"rest_login_required","message":"REST API restricted to authenticated users.","data":{"status":401}}. Esto significa que la API REST está cerrada a solicitudes externas.
El autor del plugin, Jeff Starr, tiene 15 años en WordPress y es autor de varios libros sobre el tema. El código es abierto, el plugin se actualiza regularmente: a julio de 2026, versión 2.6.8, probado hasta WordPress 7.0.2.
Ventajas:
- La instalación toma un minuto, sin ajustes
- 4 KB de código, no afecta la velocidad del sitio
- No toca el área de administración ni el editor de bloques
- Más de 30 000 instalaciones activas, valoración 4.8 en WordPress.org
Desventajas:
- Bloquea solo a usuarios no autenticados, un usuario que ha iniciado sesión ve la API REST completa
- Sin ajustes granulares en la versión gratuita (la versión Pro, REST Pro Tools, añade filtrado por rol e IP)
Precio: Gratis. Versión Pro, REST Pro Tools, en el sitio del desarrollador.
Descarga: 🔗 Disable WP REST API en WordPress.org
Método 2: Restricción mediante Solid Security
Si ya tiene instalado Solid Security (anteriormente iThemes Security), no necesita un plugin separado para la API REST. Los ajustes de seguridad incluyen un interruptor listo para usar.
Ruta: Security → Settings → Advanced → WordPress REST API. En el menú desplegable, seleccione "Restricted Access", la API REST estará disponible solo para usuarios autenticados.

Revise también el ajuste de XML-RPC en la misma sección. Si no usa la aplicación móvil de WordPress y no conecta Jetpack, desactívelo también. Dos interfaces que rara vez se necesitan pero que a menudo son atacadas.
Ventajas:
- No se necesita un plugin separado, la función ya está integrada en Solid Security
- Interfaz con explicaciones, sin necesidad de tocar código
- XML-RPC se configura al mismo tiempo
Desventajas:
- Funciona solo si ya usa Solid Security (instalarlo solo para esto es excesivo)
- La versión gratuita cierra la API REST completamente para usuarios no autenticados, sin excepciones para endpoints individuales
Descarga: 🔗 Solid Security en WordPress.org
Método 3: Código en functions.php, sin plugins
Si no quiere instalar un plugin para un solo filtro, aquí tiene un fragmento que hace lo mismo. Añádalo al functions.php de su tema hijo o mediante el plugin Code Snippets.
Haga una copia de seguridad de su sitio antes de editar. Un error en functions.php provoca la pantalla blanca de la muerte y, sin acceso de administración, tendrá que arreglarlo por FTP.
1 /** 2 * Close REST API for unauthorized users. 3 * Authorized users work with API as usual. 4 */ 5 add_filter('rest_authentication_errors', function($access) { 6 if (! is_user_logged_in()) { 7 return new WP_Error( 8 'rest_forbidden', 9 __('REST API restricted to authenticated users.', 'textdomain'), 10 array('status' => 403) 11 ); 12 } 13 return $access; 14 });
Qué sucede aquí. El filtro rest_authentication_errors se ejecuta en cada solicitud REST. is_user_logged_in() comprueba si el visitante ha iniciado sesión. Si no, se devuelve un WP_Error con código 403 y WordPress impide que la solicitud continúe. Si ha iniciado sesión, la API funciona sin restricciones.
Después de añadir el código, compruebe el resultado: abra /wp-json/ en modo incógnito. Debería devolverse un error 403.
Importante. El antiguo filtro rest_enabled se ha eliminado del núcleo de WordPress. Los fragmentos con add_filter('rest_enabled', '_return_false'), que aparecen en tutoriales antiguos, no funcionan a partir de WordPress 5.0. Use solo rest_authentication_errors.
Método 4: Bloqueo mediante.htaccess, a nivel de servidor
Un método radical. Una regla en .htaccess bloquea las solicitudes a /wp-json/ antes de que WordPress siquiera se inicie. El servidor Apache devuelve un 403 sin llegar nunca a PHP.
Adecuado cuando:
- La API REST definitivamente no se necesita en ninguna forma, ni por usted ni por los plugins;
- el servidor funciona con Apache (para Nginx la regla se escribe mediante un bloque
location); - se siente cómodo editando la configuración del servidor.
Añada al archivo .htaccess en la raíz del sitio:
1 <IfModule mod_rewrite.c> 2 RewriteEngine On 3 RewriteCond %{REQUEST_URI} ^/wp-json/ [NC] 4 RewriteRule .* - [F] 5 </IfModule>
La regla se activa en cualquier URL que comience con /wp-json/. La bandera [F] significa 403 Forbidden, la bandera [NC] hace que la comparación no distinga mayúsculas de minúsculas.
Asegúrese de hacer una copia de .htaccess antes de editar. Un error de sintaxis tira abajo todo el sitio con un error 500.
La principal desventaja de este enfoque: todas las solicitudes REST se bloquean sin excepción. Si un formulario de contacto deja de funcionar después de la edición (Contact Form 7 usa la API REST), vuelva al método 1 o 3.
Vea un resumen de 6 minutos sobre los riesgos de la API REST por David McAllen: muestra solicitudes reales a /wp-json/ y demuestra ambos plugins en acción.
⁉️🤔 Preguntas frecuentes
¿Necesito desactivar la API REST en todos los sitios?
No. Si usa la aplicación móvil de WordPress, el editor de bloques (Gutenberg) o plugins como Contact Form 7 y WooCommerce, ellos necesitan la API REST. En ese caso, es mejor no desactivarla por completo, sino configurar una restricción basada en roles.
Debe desactivar la API REST en sitios donde no se usa intencionadamente: blogs con el editor clásico, páginas de aterrizaje, sitios folleto. En tales proyectos, un
/wp-json/abierto no ofrece más que riesgos. Dos minutos para instalar el plugin Disable WP REST API y el vector de ataque queda cerrado.
¿Cómo verifico que la API REST está realmente desactivada?
Abra https://вашсайт.ru/wp-json/ en su navegador en modo incógnito (debe haber cerrado sesión). Si ve un error 401 o 403, la API REST está cerrada. Si se muestran datos JSON, la protección no funciona, revise su configuración.
La línea de comandos también funciona:
curl -I https://вашсайт.ru/wp-json/wp/v2/users. Un código de respuesta 200 significa que la lista de usuarios se está sirviendo públicamente, una señal de alarma, la protección necesita ajustes.
¿Desactivar la API REST romperá el editor de bloques?
No, si usa los métodos 1-3. El plugin Disable WP REST API, Solid Security y el fragmento rest_authentication_errors permiten el paso a los usuarios autenticados. El editor de bloques funciona, ya que usted ha iniciado sesión en el área de administración.
El método 4 (.htaccess) es la excepción. El bloqueo a nivel de servidor corta a todos indiscriminadamente y el editor de bloques dejará de funcionar. Si el área de administración se rompe después de editar
.htaccess, vuelva al método 1 o 3.
¿Qué es más seguro: un plugin o código en functions.php?
Desde el punto de vista de la protección, ambas opciones son equivalentes, usan el mismo mecanismo de WordPress. La diferencia está en la conveniencia y el mantenimiento.
El plugin Disable WP REST API se actualiza automáticamente, no depende del tema y no desaparecerá cuando cambie de plantilla. El código en
functions.phpes para quienes se oponen por principio a instalar plugins para una sola función. Elija según su enfoque de administración, no afecta a la seguridad.
¿Puedo cerrar solo el endpoint /users y dejar el resto abierto?
Puede, pero eso es una tarea de ajuste fino. Las herramientas gratuitas de este artículo bloquean la API REST por completo para usuarios no autenticados.
Si necesita mantener algunos endpoints abiertos y cerrar otros, use REST Pro Tools (la versión Pro del plugin Disable WP REST API) o el filtro
rest_endpointsenfunctions.php. Necesitará enumerar explícitamente las rutas permitidas, una tarea de media hora si conoce la estructura de la API REST de WordPress.
Ha bloqueado la API REST, ¿y ahora qué?
La API REST es solo un vector de ataque. Al cerrarla, eliminó el punto de entrada más fácil para los bots, pero esto no sustituye una protección completa.
En resumen: el método 1 (el plugin Disable WP REST API) resuelve el problema en dos minutos. Instálelo, compruebe /wp-json/ en incógnito, asegúrese de que su formulario de contacto funciona, listo. Los riesgos se reducen.
La siguiente capa es un firewall y protección contra fuerza bruta. Empiece con el Solid Security gratuito: cerrará la API REST, XML-RPC y la fuerza bruta de contraseñas en una sola interfaz. Qué plugin de seguridad usa, háganoslo saber en los comentarios.


