Como desactivar la REST API

Lo sé, estamos todos emocionados con la REST API, y de hecho ya tuvimos la primera versión en WordPress 4.4 pero ¿quien la utiliza actualmente? ¿tienes alguna aplicación en tu web que use la REST API? Entonces ¿por qué tener activa la REST API y todas las cabeceras que incluye en tu web? Buena pregunta ¿verdad?

Ah ¿que no lo sabías? Pues sí, ya está instalada en tu web la REST API, pero ¿la usas? ¡Ah! ¿que no?

Pues si te preocupa el rendimiento de tu sitio ¿para qué tener activo algo que no usas? Vamos a ver que podemos quitar …

Desactiva los enlaces en cabecera de la REST API

Lo primero que podemos eliminar, si no vamos a usarla, son los distintos enlaces de cabecera que añade la WordPress REST API que, si no lo usas con ninguna aplicación o plugin no pintan nada. Es código innecesario y queremos que WordPress vaya lo más rápido posible y ligero ¿no?

Desde WordPress 4.4 se añade la siguiente etiqueta de enlace a todas las páginas en portada:

<link rel='https://api.w.org/' href='http://example.com/path/?rest_route=/' />

Podemos desactivarla añadiendo lo siguiente al archivo functions.php del tema activo o a tu plugin de personalizaciones:

remove_action('wp_head', 'rest_output_link_wp_head', 10);

Desactiva los enlaces de oEmbed Discovery

WordPress 4.4 también añadió los siguientes enlaces de oEmbed discovery a todas las páginas de entrada única:

<link rel="alternate" type="application/json+oembed" href="http://example.com/path/?rest_route=%2Foembed%2F1.0%2Fembed&#038;url=http%3A%2F%2Fexample.com%2Fpath%2F%3Fp%3D1" />
<link rel="alternate" type="text/xml+oembed" href="http://example.com/path/?rest_route=%2Foembed%2F1.0%2Fembed&#038;url=http%3A%2F%2Fexample.com%2Fpath%2F%3Fp%3D1&#038;format=xml" />

Y lo podemos desactivar con la siguiente función (¿ya no te digo donde no?):

remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);

Desactiva el link de la REST API en las cabeceras HTTP

También se ha añadido en WordPress 4.4 el siguiente enlace de cabecera a todas las peticiones de páginas:

<http://example.com/path/wp-json/>; rel="https://api.w.org/"

Y podemos desactivar esta cabecera añadiendo lo siguiente a nuestro querido archivo functions.php o a nuestro plugin de funciones:

remove_action('template_redirect', 'rest_output_link_header', 11, 0);

¿Que no necesitas ninguno de estos enlaces? Pues nada, metemos todo esto a capón en nuestro archivo de funciones:

// Desactiva la tag de enlace de la REST API
remove_action('wp_head', 'rest_output_link_wp_head', 10);

// Desactiva enlaces de oEmbed Discovery
remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);

// Desactiva enlace de la REST API en las cabeceras HTTP
remove_action('template_redirect', 'rest_output_link_header', 11, 0);

Desactiva totalmente la REST API

Si tienes clarísimo que de momento no usas la REST API entonces puedes atacar el asunto de raíz y desactivarla completamente. Tienes un par de opciones:

Desactiva la REST API con una función

Simplemente añade la siguiente función al archivo functions.php del tema activo o a tu plugin de personalizaciones:

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

Desactiva la REST API con un plugin

Pues si, igual que hay un plugin para instalar la REST API al completo tienes uno para desactivarla, se llama Disable JSON API, lo instalas, lo activas y listo.


Referencias imprescindibles:

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(6 votos, promedio: 4.2)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

7 comentarios en “Como desactivar la REST API”

  1. Fernando Puente

    Discusión que hemos tenido tu y yo muchas veces. ¿Por qué me habilitas cosas por defecto que no se si necesitaré?
    Los servicios deben estar disponibles y habilitarse desde el panel de control o por programación en los widgets que los necesiten. El mundo al revés. Al final nuestros functions.php son REMOVE de cosas que no queremos, y lo peor, sólo disponible para usuarios avanzados.

  2. Creo que oEmbed Descovery no lo añade WP Rest API sino otro plugin que han incorporado al core llamado oEmbed API y gracias a este, ahora se puede insertar contenido de múltiples plataformas.

  3. solo para agregar, el ultimo código para desactivar por completo la REST API tiene un error por ende no funciona el código correcto vendría siendo este.

    add_filter(‘rest_enabled’, ‘_return_false’);
    add_filter(‘rest_jsonp_enabled’, ‘_return_false’);

  4. Sergi Balaguer

    Hola, gracias por tus estupendos artículos, son muy útiles.

    Una pregunta sobre este: ¿Cómo puedo saber si alguno de mis plugins usa la REST API? Yo estoy por desactivarla en mi sitio web con el código que indicas (sino totalmente, sí los 3 códigos que das primero, para el ‘functions.php’), pero no sé si eso puede afectar a alguno de mis plugins.

    Gracias!

  5. Tomas Moya Rodriguez

    Hola Fernando, gran aporte, pero para los más profanos la pregunta formulada ya hace 4 años de Sergi Balaguer nos parece interesante. Un pasarela de pago como Stripe, PayPal o un plugin como Social login o CF7 se puede ver afectado su funcionamiento con la desactivación total de la API?.

    Entiendo que es más una cuestión de una aplicación por ejemplo, pero por si acaso, como decía mi abuelo, más vale 1 segundo colorao que no toda una vida morao.

    Se agradece encarecidamente la respuesta.

    Saludos desde Murcia!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido