Elimină link-urile API JSON din header-ul html

11 dec. 2015, 01:30:16
Vizualizări: 61K
Voturi: 41

Știe cineva cum să elimine link-urile WordPress API JSON din tag-ul 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>

Aș dori să evit folosirea unui plugin. Dacă este posibil, există o modalitate de a le elimina folosind funcția remove_action?

remove_action( 'wp_head', 'rsd_link' );
0
Toate răspunsurile la întrebare 3
3
43

Văd în filters.php add_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 ), ceea ce mă face să cred că asta ar trebui să rezolve problema pentru a elimina rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

Restul... * tușește * par să fie în default-filters.php

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

Pentru a elimina rest_output_link_header

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

Referințe

11 dec. 2015 01:38:23
Comentarii

mersi, dar asta nu elimină link-ul api.w.org pentru mine.

IXN IXN
16 dec. 2015 14:52:24

Am încercat toate metodele, dar antetul api.w.org refuză să dispară! Se pare că această soluție nu mai funcționează în versiunile recente de WordPress.

Prahlad Yeri Prahlad Yeri
21 iul. 2018 16:21:52

În sfârșit, a funcționat! Se pare că trebuie să pui asta în fișierul function.php al temei. Am încercat să adaug codul într-un plugin personalizat pentru a funcționa pentru toate temele, dar se pare că nu merge așa.

Prahlad Yeri Prahlad Yeri
21 iul. 2018 16:29:03
7
30

Această funcție personalizată ar trebui să ajute la eliminarea tuturor link-urilor din header și footer - o puteți adăuga în fișierul functions.php al temei active;

function remove_json_api () {

    // Elimină liniile REST API din Header-ul HTML
    remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );

    // Elimină endpoint-ul REST API
    remove_action( 'rest_api_init', 'wp_oembed_register_route' );

    // Dezactivează auto-descoperirea oEmbed
    add_filter( 'embed_oembed_discover', '__return_false' );

    // Nu filtrează rezultatele oEmbed
    remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

    // Elimină link-urile de descoperire oEmbed
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

    // Elimină JavaScript-ul specific oEmbed din front-end și back-end
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );

   // Elimină toate regulile de rewrite pentru embed-uri
   add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

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

Iar acest fragment de cod dezactivează complet REST API și afișează conținutul de mai jos când accesați http://example.com/wp-json/, unde example.com este numele de domeniu al site-ului dvs.;

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

Pentru a dezactiva WordPress REST API, utilizați fragmentul de cod de mai jos;

function disable_json_api () {

  // Filtre pentru WP-API versiunea 1.x
  add_filter( 'json_enabled', '__return_false' );
  add_filter( 'json_jsonp_enabled', '__return_false' );

  // Filtre pentru WP-API versiunea 2.x
  add_filter( 'rest_enabled', '__return_false' );
  add_filter( 'rest_jsonp_enabled', '__return_false' );

}
add_action( 'after_setup_theme', 'disable_json_api' );
20 dec. 2015 23:09:25
Comentarii

Este necesar să eliminăm wp_oembed_add_discovery_links din head de două ori cu priorități diferite sau este o greșeală de tipar?

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

De asemenea, în disable_json_api(), dacă folosim ultima versiune de WordPress, putem include doar filtrele pentru versiunea 2.x sau sunt necesare ambele?

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

Funcția personalizată nu include funcția disable_embeds_rewrites. Sursa completă poate fi găsită la https://github.com/swissspidy/disable-embeds/blob/master/disable-embeds.php.

Drakes Drakes
14 iun. 2016 03:46:29

@Drakes Da, ai dreptate. Lipsește pentru că acest cod nu a fost actualizat de când a fost postat anul trecut. De ce nu modifici/actualizezi fragmentul de cod de mai sus pentru a-i ajuta pe ceilalți? Ar fi util și la îndemână ;)

Jentan Bernardus Jentan Bernardus
15 iun. 2016 04:42:12

Las asta în întregime la latitudinea ta.

Drakes Drakes
15 iun. 2016 06:19:24

Aș recomanda mai degrabă să folosești plugin-ul Disable Embeds în loc să copii doar jumătate din el în plugin-ul sau tema ta. Este mai sigur pentru viitor.

swissspidy swissspidy
20 feb. 2017 17:43:33

rest_enabled este învechit începând cu versiunea 4.7.0

Max Yudin Max Yudin
8 dec. 2017 20:30:16
Arată celelalte 2 comentarii
0

Cea mai bună soluție și cea mai ușoară metodă de a dezactiva link-urile de descoperire oEmbed și wp-embed.min.js este prin adăugarea acestui fragment de cod în tema ta (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);

Sper că acest lucru poate ajuta pe cineva, deoarece soluțiile menționate mai sus nu au funcționat pentru mine în timp ce foloseam cea mai recentă versiune de WordPress.

10 mai 2020 19:11:32