Entfernen Sie die JSON-API-Links in der HTML-Kopfzeile

33

Weiß jemand, wie man die WordPress-JSON-API-Links im Header-Tag entfernt?

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

Ich möchte die Verwendung eines Plugins vermeiden. Gibt es eine Möglichkeit, diese nach Möglichkeit mit der Funktion remove_action zu entfernen?

remove_action( 'wp_head', 'rsd_link' );
Jordan
quelle

Antworten:

30

Ich sehe in filters.php "add_action ('wp_head', 'rest_output_link_wp_head', 10, 0)" rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

Der Rest ... * hust * scheint in default-filters.php zu sein

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

So entfernen Sie den rest_output_link_header

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

Referenz

jgraup
quelle
1
danke aber dadurch wird der api.w.orglink für mich nicht entfernt .
IXN
Versuchte sie alle, aber der Header von api.w.org rührt sich nicht! Dies scheint in den neuesten WordPress-Versionen nicht mehr zu funktionieren.
Prahlad Yeri
1
Okay, es hat funktioniert! Es stellt sich heraus, dass Sie dies in das Thema setzen müssen function.php. Ich habe versucht, dies in mein benutzerdefiniertes Plugin zu integrieren, damit es für alle Themen funktioniert, aber anscheinend funktioniert das nicht.
Prahlad Yeri
26

Diese benutzerdefinierte Funktion sollte dazu beitragen, alle Links in der Kopf- und Fußzeile zu entfernen. Sie können sie in die functions.phpDatei Ihres aktiven Designs einfügen.

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

Und dieses Snippet deaktiviert die REST-API vollständig und zeigt den Inhalt unten an, wenn Sie besuchen http://example.com/wp-json/, wo example.comder Domainname Ihrer Website ist;

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

Um die WordPress-REST-API zu deaktivieren, verwenden Sie das folgende Snippet.

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
quelle
Ist es notwendig, wp_oembed_add_discovery_linkszweimal mit unterschiedlichen Prioritäten vom Kopf zu entfernen, oder ist das ein Tippfehler?
Bryan Willis
disable_json_api()Können wir auch in den neuesten WordPress-Versionen nur die Filter der Version 2.x einbinden oder werden beide benötigt?
Bryan Willis
3
Der benutzerdefinierten Funktion fehlt die Funktion disable_embeds_rewrites. Die vollständige Quelle finden Sie unter github.com/swissspidy/disable-embeds/blob/master/… .
Drakes
@Drakes Ja, du hast recht. Es fehlt, weil dieser Code nicht aktualisiert wurde, seit er im letzten Jahr veröffentlicht wurde. Warum nicht das obige Snippet ändern / aktualisieren, um anderen hier zu helfen? Das wäre hilfreich und praktisch;)
Jentan Bernardus
1
Ich würde eher empfehlen, das Plug-in zum Deaktivieren von Einbettungen zu verwenden, anstatt nur die Hälfte davon in Ihr Plug-in oder Thema zu kopieren. Es ist zukunftssicherer.
swissspidy