Gestionar y trabajar con la REST API de WordPress

REST API WordPress

En un mundo basado en la nube, la principal característica es la interconexión de sus nodos. Entendemos nodo como todos aquellos dispositivos conectados a una red.

Para el correcto funcionamiento y conexión entre dispositivos es necesario hablar el mismo lenguaje, y utilizar el mismo protocolo. Incluso diferentes partes de una web pueden requerir el uso de estos protocolos. Este es el caso de WordPress.

Veámoslo con detenimiento.

¿Qué es la REST API de WordPress?

La REST API de WordPress es la parte del código que comunica nuestra interfaz, el frontend, con la base de datos, backend.

En 1994 se establecieron los principios de intercambio de información mediante la metodología REST (REpresentational State Transfer). Este protocolo permite utilizar de forma homogénea las normas de comunicación entre dos partes de una o varias webs.

API (Application Programming Interface) hace referencia a la interfaz que facilita el intercambio de información según el protocolo designado.

En la versión 4.7 de WordPress se incluyó dentro del core de WordPress una REST API que permitía el intercambio de información. y a partir de la versión 5.X se han ampliado las funcionalidades que permite este código.

Plugins para gestionar la REST API de WP

Si nos encontramos desarrollando funcionalidades para nuestra instalación de WordPress o para la integración con sistemas de teceros, es necesario conocer cómo funciona. El control y la gestión de la API podemos hacerlo mediante la instalación y activación de algunos de los siguientes plugins:

Ambas opciones se encuentran en el repositorio oficial de WordPress. La principal función de ambos es: Activar/desactivar los puntos finales de la API REST.

Disable REST API

Creo que su nombre ya lo dice todo, nos permite desactivar las APIs de nuestra instalación.

Rest API Toolbox

Este plugin es idóneo para gestionar las configuración por defecto que crea WordPress. Gestiona la autenticación y seguridad de los endpoints (puntos de conexión con el core de WP).

Este desarrollador cuenta con un plugin para crear logs de uso de la API, ideal si estamos desarrollando o realizando auditorias del sitio: REST API Log

WP Rest API Controller

Este plugin nos permite personalizar y gestionar nuestros puntos de conexión con WordPress (Endpoints). Además de obtener un mayor control sobre las peticiones/respuestas que se realizan. Todo ello nos permite hacerlo si eescribir una sola línea de código

Recursos de código para trabajar con la REST API

Existen diferentes plugins que nos permiten trabajar e integrar nuestra instalación con la de terceros. Además de los anteriores. También existen funcionalidades a código que nos permiten personalizar algunas de estas funciones.

Desactivar API REST mediante código

Para desactivarla mediante código puedes añadir este código a tu archivo functions, o mejor aún a tu plugin de funcionalidades. Este código solo permite solicitudes de usuarios conectados, deshabilitando aquellas conexiones no autenticadas. Esto es ideal para que las peticiones anónimas sean rechazadas y los plugins siguen funcionando con normalidad.

add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! empty( $result ) ) {
        return $result;
    }
    if ( ! is_user_logged_in() ) {
        return new WP_Error( 
        	'rest_not_logged_in', 
        	'No estás logueado.', 
        	array( 'status' => 401 ) 
        );
    }
    return $result;
});

Otra opción más drástica para desactivarla por completo es utilizar el siguiente código en el archivo functions de tu child theme activo o mejor aun en el plugin de funcionalidades. Ten en cuenta que si utilizas este método, es posible que dejen de funcionar algunos plugins.

add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');

Te dejo un enlace a este GIST de chrismccoy, donde podrás ver funcionalidades extra con código para aumentar la conexión de tu instalación.