헤더 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 헤더는 버리지 않습니다! 이것은 최근 워드 프레스 버전에서 더 이상 작동하지 않는 것 같습니다.
Prahlad Yeri

1
알았어, 효과가 있었어! 이것을 테마에 넣어야합니다 function.php. 모든 테마에서 작동하도록 작동 시키지는 않지만 사용자 정의 플러그인에 넣으려고했습니다.
Prahlad Yeri

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우선 순위가 다른 두 번 머리에서 제거해야 합니까, 아니면 오타입니까?
Bryan Willis

또한 disable_json_api()최신 워드 프레스를 사용 하는 경우 버전 2.x 필터를 포함 시키거나 둘 다 필요합니까?
Bryan Willis

3
사용자 정의 기능에 기능이 없습니다 disable_embeds_rewrites. 전체 소스는 github.com/swissspidy/disable-embeds/blob/master/… 에서 찾을 수 있습니다 .
Drakes

@Drakes 네, 그렇습니다. 이 코드는 작년에 게시 된 이후 업데이트되지 않았기 때문에 누락되었습니다. 대신 다른 사람들을 돕기 위해 위의 스 니펫을 수정 / 업데이트하지 않는 이유는 무엇입니까? 도움이되고 편리합니다;)
Jentan Bernardus 2016

1
플러그인 또는 테마에 절반 만 복사하는 대신 Embeds 비활성화 플러그인을 사용하는 것이 좋습니다. 더 미래 지향적입니다.
swissspidy 2012
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.