Deshabilitar la REST API para usuarios no logueados

Por defecto WordPress habilita el acceso a través de la Rest API a una serie de recursos como posts, páginas y demás información que en ocasiones puede que no queramos que esté disponible para que se pueda solicitar y ver el contenido así como la estructura.

Normalmente tendremos una estructura clásica que nos proporciona WordPress tras su instalación y configuración e incluso algún que otro recurso más que hayamos añadido mediante algún plugin o algún custom post type pero en otras ocasiones, cuando la instalación no sea una «simple» página web y tengamos información en el backoffice que no queremos que se comparta, lo más seguro va a ser deshabilitar por completo las consultas a la REST API y crear nuestras rutas personalizadas para utilizarlas de manera privada y dar acceso sólo a quienes queramos.

Existe la posibilidad de establecer que sea necesario autenticarse para todas y cada una de las peticiones que se hagan a nuestra REST API, pero eso es parte de otro tutorial que preparé y lo tendréis disponible en breve.

La forma más sencilla y fácil de deshabilitar cualquier petición a la REST API de WordPress para usuarios no logueados es utilizar un plugin. En concreto el plugin Disable WP REST API que está disponible de forma gratuita en el repositorio de WordPress.

En entornos de producción, para ahorrarnos un plugin, es mejor añadir las pocas líneas que implementa el plugin y así nos ahorramos alguna que otra llamada.

Como dice el plugin, esto es lo que hace:

  • Disable REST/JSON for visitors (not logged in)
  • Disables REST header in HTTP response for all users
  • Disables REST links in HTML head for all users
  • 100% plug-and-play, set-it-and-forget solution

Podéis echarle un vistazo al código del plugin en este enlace que, como ya suponéis es muy poco.

Personalmente lo uso mucho para pruebas, por agilidad. En entornos serios o en producción prefiero añadir esas pocas líneas de código al plugin de funciones.

Y eso es todo por ahora. Seguiré trabajando en diversos artículos sobre la REST API de WordPress y de otros temas que me parecen interesante y con los que trabajo normalmente.