Hapus tautan JSON API di header html


33

Adakah yang tahu cara menghapus tautan WordPress JSON API di 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>

Saya ingin menghindari menggunakan plugin. Jika memungkinkan, apakah ada cara untuk menghapusnya dengan fungsi remove_action?

remove_action( 'wp_head', 'rsd_link' );

Jawaban:


30

Saya melihat di filter.php "add_action ('wp_head', 'rest_output_link_wp_head', 10, 0)" Yang membuat saya berpikir ini harus melakukan trik untuk menghapus rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

Sisanya ... * batuk * tampaknya di default-filter.php

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

Untuk menghapus rest_output_link_header

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

Referensi


1
terima kasih tetapi ini tidak menghapus api.w.orgtautan untuk saya.
— IXN

Sudah mencoba semuanya, tetapi header api.w.org tidak mau bergerak! Ini sepertinya tidak lagi berfungsi di versi wordpress terbaru.
— Prahlad Yeri

1
Baiklah, itu berhasil! Ternyata Anda harus meletakkan ini di tema function.php. Saya mencoba untuk meletakkan ini di plugin khusus saya sehingga berfungsi untuk semua tema, tetapi ternyata itu tidak berhasil.
— Prahlad Yeri

26

Fungsi khusus ini akan membantu menghapus semua tautan di header dan footer - Anda dapat meletakkannya di dalam functions.phpfile tema aktif Anda;

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

Dan potongan ini sepenuhnya menonaktifkan API REST dan menunjukkan konten di bawah ini ketika Anda mengunjungi http://example.com/wp-json/, example.comadalah nama domain situs web Anda;

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

Untuk menonaktifkan API WordPress REST, gunakan snippet di bawah ini;

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

Apakah perlu untuk menghapus wp_oembed_add_discovery_linksdari kepala dua kali dengan prioritas yang berbeda atau apakah itu salah ketik?
— Bryan Willis

Juga di disable_json_api()jika menggunakan wordpress terbaru dapatkah kita cukup memasukkan filter versi 2.x atau keduanya diperlukan?
— Bryan Willis

3
Fungsi kustom tidak memiliki fungsi disable_embeds_rewrites. Sumber lengkap dapat ditemukan di github.com/swissspidy/disable-embeds/blob/master/… .
— Drakes

@ Gores Ya, Anda benar. Tidak ada karena kode ini belum diperbarui karena telah diposting tahun lalu. Mengapa tidak mengubah / memperbarui cuplikan di atas untuk membantu orang lain di sini? Itu akan sangat membantu dan berguna;)
— Jentan Bernardus

1
Saya lebih suka merekomendasikan untuk menggunakan plugin Disable Embeds daripada hanya menyalin sebagian saja ke plugin atau tema Anda. Ini lebih tahan masa depan.
— swissspidy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.