Видаліть посилання API JSON у заголовку HTML


33

Хтось знає, як видалити посилання API WordPress JSON в тезі заголовка?

<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( 'wp_head', 'rsd_link' );

Відповіді:


30

Я бачу в filters.php "addžba ('wp_head', 'rest_output_link_wp_head', 10, 0)" Що змушує мене думати, що для цього слід зробити трюк rel='https://api.w.org/'.

remove_action( 'wp_head',      'rest_output_link_wp_head'              );

Решта ... * кашель *, здається, знаходиться у замовчуванні-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 не зміститься! Схоже, це не працює в останніх версіях wordpress.
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' );

І цей фрагмент повністю відключить API REST і показує вміст, наведений нижче, коли ви відвідуєте http://example.com/wp-json/, example.com- це доменне ім'я вашого веб-сайту;

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

Щоб відключити API WordPress REST, використовуйте фрагмент нижче;

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двічі знімати з голови різні пріоритети чи це друкарська помилка?
Брайан Вілліс

Також у випадку, disable_json_api()якщо за допомогою останнього Wordpress ми можемо просто включити фільтри версії 2.x або вони потрібні обоє?
Брайан Вілліс

3
У спеціальній функції відсутня функція disable_embeds_rewrites. Повне джерело можна знайти на веб- сайті github.com/swissspidy/disable-embeds/blob/master/… .
Дрейкс

@Drakes Так, ти маєш рацію. Він відсутній, оскільки цей код не оновлювався з моменту опублікування минулого року. Чому б не змінити / оновити фрагмент вище, щоб допомогти іншим тут? Це було б корисно і зручно;)
Jentan Bernardus

1
Я б рекомендував використовувати плагін Disable Embeds, а не копіювати лише половину його у свій плагін або тему. Це більш стійке до майбутнього.
swissspidy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.