Xóa các liên kết API JSON trong tiêu đề html


33

Có ai biết cách xóa các liên kết API JSON của WordPress trong thẻ tiêu đề không?

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

Tôi muốn tránh sử dụng một plugin. Nếu có thể, có cách nào để loại bỏ chúng bằng hàm remove_action không?

remove_action( 'wp_head', 'rsd_link' );

Câu trả lời:


30

Tôi thấy trong bộ lọc.php "add_action ('wp_head', 'restDefput_link_wp_head', 10, 0)" Điều này khiến tôi nghĩ rằng điều này nên thực hiện thủ thuật để loại bỏ rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

Phần còn lại ... * ho * dường như ở default-filter.php

remove_action( 'wp_head',      'wp_oembed_add_discovery_links'         );

Để xóa restDefput_link_header

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

Tài liệu tham khảo


1
cảm ơn nhưng điều này không loại bỏ api.w.orgliên kết cho tôi.
IXN

Đã thử tất cả chúng, nhưng tiêu đề api.w.org sẽ không nhúc nhích! Điều này dường như không còn hoạt động trong các phiên bản wordpress gần đây.
Prahlad Yeri

1
Được rồi, nó đã làm việc! Hóa ra bạn phải đặt cái này trong chủ đề function.php. Tôi đã cố gắng đưa cái này vào plugin tùy chỉnh của mình để nó hoạt động cho tất cả các chủ đề, nhưng dường như nó không hoạt động.
Prahlad Yeri

26

Chức năng tùy chỉnh này sẽ giúp xóa tất cả các liên kết trong đầu trang và chân trang - bạn có thể đặt nó vào trong functions.phptệp của chủ đề đang hoạt động;

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

Và đoạn mã này hoàn toàn vô hiệu hóa API REST và hiển thị nội dung bên dưới khi bạn truy cập http://example.com/wp-json/, example.comlà tên miền của trang web của bạn;

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

Để tắt API WordPress REST, hãy sử dụng đoạn mã dưới đây;

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

Có cần phải loại bỏ wp_oembed_add_discovery_linkskhỏi đầu hai lần với các ưu tiên khác nhau hay đó là một lỗi đánh máy?
Bryan Willis

Ngoài ra, disable_json_api()nếu sử dụng wordpress mới nhất, chúng ta có thể chỉ bao gồm các bộ lọc phiên bản 2.x hay cả hai đều cần thiết?
Bryan Willis

3
Các chức năng tùy chỉnh là thiếu chức năng disable_embeds_rewrites. Nguồn đầy đủ có thể được tìm thấy tại github.com/swissspidy/disable-embeds/blob/master/ mẹo .
Drakes

@Drakes Vâng, bạn nói đúng. Nó bị thiếu vì mã này chưa được cập nhật vì nó đã được đăng vào năm ngoái. Tại sao không sửa đổi / cập nhật đoạn trích ở trên để giúp những người khác ở đây thay thế? Điều đó sẽ hữu ích và tiện dụng;)
Jentan Bernardus

1
Tôi muốn khuyên bạn nên sử dụng plugin Vô hiệu hóa thay vì chỉ sao chép một nửa số đó vào plugin hoặc chủ đề của bạn. Đó là bằng chứng trong tương lai.
swissspidy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.