ヘッダーhtmlのJSON APIリンクを削除します


33

誰かがヘッダータグのWordPress JSON APIリンクを削除する方法を知っていますか?

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

プラグインの使用を避けたい。可能であれば、remove_action関数でそれらを削除する方法はありますか?

remove_action( 'wp_head', 'rsd_link' );

回答:


30

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

残り... * * default-filters.phpにあるようです

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

rest_output_link_headerを削除するには

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

参照


1
感謝しますが、これはapi.w.org私のためにリンクを削除しません。
IXN

すべて試してみましたが、api.w.orgヘッダーは動きません!これは、最近のワードプレスバージョンでは動作しなくなったようです。
プララッドイェリ

1
よし、うまくいきました!これをテーマのに入れる必要がありますfunction.php。これをすべてのテーマで機能するようにカスタムプラグインに入れようとしましたが、どうやら機能しないようです。
プララッドイェリ

26

このカスタム関数は、ヘッダーとフッターのすべてのリンクを削除するのに役立ちます- functions.phpアクティブなテーマのファイル内に配置できます。

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

そして、このスニペットを完全に無効RESTのAPIやショーあなたが訪問したときに以下の内容http://example.com/wp-json/であったがexample.com、あなたのウェブサイトのドメイン名です。

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

WordPress REST APIを無効にするには、以下のスニペットを使用します。

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

wp_oembed_add_discovery_links優先順位を変えて頭から2回取り除く必要がありますか、それともタイプミスですか?
ブライアンウィリス

またdisable_json_api()、最新のワードプレスを使用している場合、バージョン2.xのフィルターのみを含めることができますか、それとも両方が必要ですか?
ブライアンウィリス

3
カスタム関数に関数がありませんdisable_embeds_rewrites。完全なソースはgithub.com/swissspidy/disable-embeds/blob/master/…にあります。
ドレイク

@Drakesはい、そうです。このコードは、昨年投稿されて以来更新されていないため、欠落しています。代わりにここで他の人を助けるために上記のスニペットを変更/更新してみませんか?それは役に立つと便利でしょう;)
ジェンタンバーナーダス

1
プラグインまたはテーマに半分だけをコピーするのではなく、Disable Embedsプラグインを使用することをお勧めします。より将来性があります。
swissspidy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.