Eliminar los enlaces de la API JSON en el encabezado html

31

¿Alguien sabe cómo eliminar los enlaces de la API JSON de WordPress en la etiqueta del encabezado?

<head>
...
<link rel='https://api.w.org/' href='http://example.com/wp-json/' />
<link rel="alternate" type="application/json+oembed" href="http://example.com/wp-json/oembed/1.0/embed?url=..." />
<link rel="alternate" type="text/xml+oembed" href="http://example.com/wp-json/oembed/1.0/embed?url=..." />
</head>

Me gustaría evitar el uso de un complemento. Si es posible, ¿hay alguna forma de eliminarlos con la función remove_action?

remove_action( 'wp_head', 'rsd_link' );
    
pregunta Jordan 11.12.2015 - 00:30

2 respuestas

27

Veo en filters.php "add_action ('wp_head', 'rest_output_link_wp_head', 10, 0)" Lo que me hace pensar que debería hacer el truco para eliminar rel='https://api.w.org/' .

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

El resto ... * tos * parece estar en default-filters.php

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

Para eliminar el rest_output_link_header

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

Referencia

respondido por el jgraup 11.12.2015 - 00:38
23

Esta función personalizada debería ayudar a eliminar todos los enlaces en el encabezado y el pie de página.

function remove_json_api () {

    // Remove the REST API lines from the HTML Header
    remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );

    // Remove the REST API endpoint.
    remove_action( 'rest_api_init', 'wp_oembed_register_route' );

    // Turn off oEmbed auto discovery.
    add_filter( 'embed_oembed_discover', '__return_false' );

    // Don't filter oEmbed results.
    remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

    // Remove oEmbed discovery links.
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

    // Remove oEmbed-specific JavaScript from the front-end and back-end.
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );

   // Remove all embeds rewrite rules.
   add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

}
add_action( 'after_setup_theme', 'remove_json_api' );

Y este fragmento de código deshabilita completamente la API REST y muestra {"code":"rest_disabled","message":"The REST API is disabled on this site."} cuando visita enlace

function disable_json_api () {

  // Filters for WP-API version 1.x
  add_filter('json_enabled', '__return_false');
  add_filter('json_jsonp_enabled', '__return_false');

  // Filters for WP-API version 2.x
  add_filter('rest_enabled', '__return_false');
  add_filter('rest_jsonp_enabled', '__return_false');

}
add_action( 'after_setup_theme', 'disable_json_api' );

Eso es todo.

    
respondido por el Jentan Bernardus 20.12.2015 - 22:09

Lea otras preguntas en las etiquetas