Как отключить REST API в WordPress

Технология JSON REST API WordPress нужна для внешнего управления сайтом. В WordPress, начиная с версии 4.4, в ядро была добавлена такая возможность, которая позволяет создавать и редактировать контент без входа в админ-панель. Обычно такими инструментами пользуются, когда ВордПресс-сайт имеет огромное количество материалов, и админка начинает тормозить.

Интерфейс JSON REST API позволит получить доступ к материалам WP-сайта, используя при этом любой внешний интерфейс, написанный с помощью одного из доступных на сегодняшний день веб-языков, или приложение.

Как работает и зачем отключать REST API в WordPress?

В последних версиях “движка” REST API был включен в ядро. Это означает, что он начинает работать автоматически уже установки свежей копии WordPress, добавляя на каждой странице сайта строку <link rel='https://api.w.org/' href='http://site.ru/wp-json/' />. Если вы создаете контент только в админ-панели своего сайта, тот этот функционал не нужен. Плюс в коде всех страниц присутствует ненужная внешняя ссылка. Также этим функционалом успешно пользуются злоумышленники для проведения DDoS-атак. А это отнимает много ресурсов хостинга, и как следствие – замедляет работу веб-ресурса.

Как отключить REST API WordPress?

Есть несколько способов. Рассмотрим популярные и часто используемые.

Способ 1. Плагин Disable REST API

Бесплатный плагин Disable REST API – отдельное решение, которое выполняет одну функцию – отключает этот интерфейс. Модуль не нужно настраивать, он работает сразу после установки и активации.

Результат работы плагина легко проверить. Для этого откройте любую страницу своего WordPress-сайта и нажмите комбинацию клавиш [Ctrl]+[U]. Если в разделе <head> не будет найдена вышеуказанная строка, то технология успешно отключена.

Исходный код страницы сайта

Способ 2. С помощью файла functions.php

Этот способ предусматривает редактирование содержимого файла functions.php вашей активной WordPress-темы.

Если по каким-либо причинам не хотите файл функций, то в этом случае Вам поможет плагин ProFunctions.

В указанный файл вставьте следующие строки PHP-кода:

add_filter('rest_enabled', '__return_false');
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
remove_action( 'init', 'rest_api_init' );
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
remove_action( 'parse_request', 'rest_api_loaded' );
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );

Код уберет лишнюю ссылку из шапки сайта и полностью отключит REST API WordPress.

Способ 3. Плагин Clearfy Pro

Премиум-плагин Clearfy Pro – мощное универсальное решение для оптимизации, ускорения и защиты WordPress-сайтов. Также он отключает REST API.

  1. В админке перейдите в раздел Clearfy Pro.
  2. На вкладке Код активируйте опцию Отключить JSON REST API.
  3. Нажмите кнопку Сохранить изменения.

Настройка плагина Clearfy Pro

Преимущество использования Clearfy Pro для деактивации JSON REST API WordPress в том, что для этого не нужно заниматься правкой каких-либо файлов сайта или поиском отдельных решений, которые часто пишутся непрофессионалами и могут вызывать ошибки.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: