Rimuovere i link API JSON nell'header html

11 dic 2015, 01:30:16
Visualizzazioni: 61K
Voti: 41

Qualcuno sa come rimuovere i link dell'API JSON di WordPress nel tag header?

<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 utilizzare un plugin. Se possibile, c'è un modo per rimuoverli con la funzione remove_action?

remove_action( 'wp_head', 'rsd_link' );
0
Tutte le risposte alla domanda 3
3
43

Vedo in filters.php "add_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 )" il che mi fa pensare che questo dovrebbe funzionare 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 il rest_output_link_header

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

Riferimenti

11 dic 2015 01:38:23
Commenti

grazie ma questo non rimuove il link api.w.org per me.

IXN IXN
16 dic 2015 14:52:24

Ho provato tutti, ma l'header api.w.org non si muove! Sembra che questo non funzioni più nelle versioni recenti di WordPress.

Prahlad Yeri Prahlad Yeri
21 lug 2018 16:21:52

Perfetto, ha funzionato! A quanto pare bisogna inserire questo nel function.php del tema. Stavo cercando di inserirlo nel mio plugin personalizzato in modo che funzionasse per tutti i temi, ma a quanto pare non funziona così.

Prahlad Yeri Prahlad Yeri
21 lug 2018 16:29:03
7
30

Questa funzione personalizzata ti aiuterà a rimuovere tutti i link nell'header e nel footer - puoi inserirla nel file functions.php del tuo tema attivo;

function remove_json_api () {

    // Rimuove le righe della REST API dall'HTML Header
    remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );

    // Rimuove l'endpoint della REST API
    remove_action( 'rest_api_init', 'wp_oembed_register_route' );

    // Disabilita la scoperta automatica degli oEmbed
    add_filter( 'embed_oembed_discover', '__return_false' );

    // Non filtra i risultati degli oEmbed
    remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

    // Rimuove i link di scoperta degli oEmbed
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

    // Rimuove il JavaScript specifico per oEmbed dal front-end e back-end
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );

   // Rimuove tutte le regole di rewrite degli embed
   add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

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

Questo snippet disabilita completamente la REST API e mostra il contenuto qui sotto quando visiti http://example.com/wp-json/, dove example.com è il dominio del tuo sito;

{"code":"rest_disabled","message":"La REST API è disabilitata su questo sito."}

Per disabilitare la WordPress REST API, usa lo snippet qui sotto;

function disable_json_api () {

  // Filtri per la versione 1.x di WP-API
  add_filter( 'json_enabled', '__return_false' );
  add_filter( 'json_jsonp_enabled', '__return_false' );

  // Filtri per la versione 2.x di WP-API
  add_filter( 'rest_enabled', '__return_false' );
  add_filter( 'rest_jsonp_enabled', '__return_false' );

}
add_action( 'after_setup_theme', 'disable_json_api' );
20 dic 2015 23:09:25
Commenti

È necessario rimuovere wp_oembed_add_discovery_links dall'head due volte con priorità diverse o è un errore di battitura?

Bryan Willis Bryan Willis
5 apr 2016 19:45:29

Inoltre, nella funzione disable_json_api(), se si utilizza l'ultima versione di WordPress, possiamo includere solo i filtri per la versione 2.x o sono necessari entrambi?

Bryan Willis Bryan Willis
5 apr 2016 19:47:46

Manca la funzione personalizzata disable_embeds_rewrites. Il codice sorgente completo è disponibile su https://github.com/swissspidy/disable-embeds/blob/master/disable-embeds.php.

Drakes Drakes
14 giu 2016 03:46:29

@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 invece? Sarebbe utile e pratico ;)

Jentan Bernardus Jentan Bernardus
15 giu 2016 04:42:12

Lascerò completamente alla tua discrezione.

Drakes Drakes
15 giu 2016 06:19:24

Consiglierei piuttosto di usare il plugin Disable Embeds invece di copiarne solo metà nel tuo plugin o tema. È più a prova di futuro.

swissspidy swissspidy
20 feb 2017 17:43:33

rest_enabled è deprecato dalla versione 4.7.0

Max Yudin Max Yudin
8 dic 2017 20:30:16
Mostra i restanti 2 commenti
0

La soluzione migliore e più semplice per disabilitare i link di scoperta oEmbed e wp-embed.min.js è aggiungere questo snippet di codice nel tema (function.php).

remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 ); remove_action( 'wp_head', 'wp_oembed_add_host_js' ); remove_action('rest_api_init', 'wp_oembed_register_route'); remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

Spero che questo possa aiutare qualcuno, dato che le soluzioni sopra indicate non funzionano per me mentre utilizzo l'ultima versione di WordPress.

10 mag 2020 19:11:32