Remover links da API JSON no cabeçalho html

33

Alguém sabe como remover os links da API JSON do WordPress na tag do cabeçalho?

<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>

Eu gostaria de evitar o uso de um plugin. Se possível, existe uma maneira de removê-los com a função remove_action?

remove_action( 'wp_head', 'rsd_link' );
Jordânia
fonte

Respostas:

30

Eu vejo em filters.php "add_action ('wp_head', 'rest_output_link_wp_head', 10, 0)" O que me faz pensar que isso deve fazer o truque para remover rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

O resto ... * tosse * parece estar em default-filters.php

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

Para remover o rest_output_link_header

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

Referência

jgraup
fonte
1
obrigado, mas isso não remove o api.w.orglink para mim.
IXN
Tentei todos eles, mas o cabeçalho api.w.org não se move! Isso não parece mais funcionar nas versões recentes do wordpress.
Prahlad Yeri
1
Tudo bem, funcionou! Acontece que você deve colocar isso no tema function.php. Eu estava tentando colocar isso no meu plug-in personalizado para que funcione em todos os temas, mas aparentemente isso não funciona.
Prahlad Yeri
26

Essa função personalizada deve ajudar a remover todos os links no cabeçalho e rodapé - você pode colocá-la dentro do functions.phparquivo do seu tema ativo;

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' );

E esse trecho desabilita completamente a API REST e mostra o conteúdo abaixo quando você visita http://example.com/wp-json/, onde example.comé o nome de domínio do seu site;

{"code":"rest_disabled","message":"The REST API is disabled on this site."}

Para desativar a API REST do WordPress, use o snippet abaixo;

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' );
Jentan Bernardus
fonte
É necessário remover wp_oembed_add_discovery_linksda cabeça duas vezes com prioridades diferentes ou isso é um erro de digitação?
Bryan Willis
Também no disable_json_api()if usando o wordpress mais recente, podemos incluir apenas os filtros da versão 2.x ou ambos são necessários?
Bryan Willis
3
A função personalizada está ausente disable_embeds_rewrites. A fonte completa pode ser encontrada em github.com/swissspidy/disable-embeds/blob/master/… .
Drakes
@ Drakes Sim, você está certo. Está faltando, porque esse código não foi atualizado desde que foi publicado no ano passado. Por que não modificar / atualizar o trecho acima para ajudar outras pessoas aqui? Isso seria útil e útil;);)
Jentan Bernardus
1
Prefiro usar o plug-in Desativar incorporações em vez de copiar apenas metade dele no seu plug-in ou tema. É mais à prova de futuro.
28417 swissspidy