Rimuovere i collegamenti API JSON nell'intestazione html


33

Qualcuno sa come rimuovere i collegamenti API JSON WordPress nel tag di intestazione?

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

Vorrei evitare di usare un plugin. Se possibile, c'è un modo per rimuoverli con la funzione remove_action?

remove_action( 'wp_head', 'rsd_link' );

Risposte:


30

Vedo in filters.php "add_action ('wp_head', 'rest_output_link_wp_head', 10, 0)" Il che mi fa pensare che questo dovrebbe fare il trucco per rimuovere rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

Il resto ... * tosse * sembra essere in default-filters.php

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

Per rimuovere rest_output_link_header

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

Riferimento


1
grazie ma questo non rimuove il api.w.orglink per me.
— IXN,

Ho provato tutti, ma l'intestazione api.w.org non si muoverà! Questo sembra non funzionare più nelle recenti versioni di wordpress.
— Prahlad Yeri,

1
Va bene, ha funzionato! Si scopre che devi metterlo nel tema function.php. Stavo cercando di inserirlo nel mio plug-in personalizzato in modo che funzioni per tutti i temi, ma a quanto pare non funziona.
— Prahlad Yeri,

26

Questa funzione personalizzata dovrebbe aiutare a rimuovere tutti i collegamenti nell'intestazione e nel piè di pagina: è possibile inserirlo nel functions.phpfile del tema attivo;

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 questo frammento disabilita completamente l'API REST e mostra il contenuto seguente quando visiti http://example.com/wp-json/, dove example.comè il nome di dominio del tuo sito Web;

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

Per disabilitare l'API REST di WordPress, usa lo snippet di seguito;

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

È necessario rimuovere wp_oembed_add_discovery_linksdalla testa due volte con priorità diverse o è un errore di battitura?
— Bryan Willis,

Anche disable_json_api()se usando l'ultimo wordpress possiamo includere solo i filtri della versione 2.x o sono entrambi necessari?
— Bryan Willis,

3
Nella funzione personalizzata manca la funzione disable_embeds_rewrites. La fonte completa è disponibile all'indirizzo github.com/swissspidy/disable-embeds/blob/master/… .
— Drakes,

@Drakes Sì, hai ragione. Manca perché questo codice non è stato aggiornato da quando è stato pubblicato l'anno scorso. Perché non modificare / aggiornare lo snippet qui sopra per aiutare gli altri qui? Sarebbe utile e utile;)
— Jentan Bernardus,

1
Preferirei piuttosto utilizzare il plug-in Disable Embeds invece di copiarne solo metà nel plug-in o nel tema. È più a prova di futuro.
— swissspidy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.