La API REST de WordPress se introdujo en el núcleo de WordPress a finales de 2016 con el lanzamiento de WordPress 4.6.
Como todos los grandes cambios que aparecen en la plataforma, la API REST generó controversia en algunos e indiferencia en otros.
Si tienes una versión actualizada de WordPress estás exponiendo públicamente muchos aspectos de tu sitio web a través de la REST API.
En esta publicación encontrarás la manera de deshabilitar la REST API y los enlaces que esta funcionalidad agrega al código fuente de tu sitio.
Table of Contents
Verificar la Activación del Rest API en WordPress
Si deseas verificar si el REST API se encuentra activado en tu sitio, simplemente agrega el fragmento / wp-json / a tu nombre de dominio y puedes ver la información que estas compartiendo públicamente
https://ejemplo.com/wp-json/
Además, realiza el ejercicio de visitar las siguientes URLs
https://ejemplo.com/wp-json/wp/v2/users
https://ejemplo.com/wp-json/wp/v2/posts
Como resultado de la primera URL, tendrás un archivo JSON con los datos de los usuarios de tu web.
La segunda URL nos muestra una lista con las últimas publicaciones.
Mostrar API REST de WordPress solo a usuarios registrados
Una solución que podemos implementar para ocultar la API REST de WordPress es evitar que los usuarios que no están registrados en nuestro sitio web accedan a ella.
Para ocultar la API REST a usuarios no registrados, debemos agregar el siguiente código en el archivo functions.php
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', 'You are not currently logged in.', array( 'status' => 401 ) );
}
if ( ! current_user_can( 'administrator' ) ) {
return new WP_Error( 'rest_not_admin', 'You are not an administrator.', array( 'status' => 401 ) );
}
return $result;
});
Una vez que haya puesto este código en su WordPress, acceder a una ruta de la REST API en su sitio web sin estar conectado dará como resultado un mensaje de error.
Deshabilitar REST API con MU-Plugin
Si deseas implementar ese code snippet sin la necesidad de un plugin, puedes crear un plugin y agregarlo en el folder mu-plugins.
Lo único que debes hacer es crear un archivo PHP, agregar el siguiente código y guardarlo en el folder de mu-plugins
<?php
/*
Plugin Name: Rest API
Plugin URI: https://ticolibre.com
Description: Rest API Remover
Version: 1.0
Author: TicoLibre
Author URI: https://ticolibre.com
*/
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', 'You are not currently logged in.', array( 'status' => 401 ) );
}
if ( ! current_user_can( 'administrator' ) ) {
return new WP_Error( 'rest_not_admin', 'You are not an administrator.', array( 'status' => 401 ) );
}
return $result;
});
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');