Общеизвестно, что функционал, называемый JSON REST API, используется для внешнего управления сайтом. Так, в WordPress, начиная с версии 4.4, была добавлена такая возможность, которая позволяет создавать и редактировать контент сайта без непосредственного входа в админ-панель. Обычно такими инструментами пользуются, когда WordPress-сайт имеет огромное количество материалов, и админка, грубо говоря, начинает тормозить.
Функционал JSON REST API позволит получить доступ к материалам WordPress-сайта, используя при этом любой внешний интерфейс, написанный с помощью одного из доступных на сегодняшний день веб-языков.
Зачем отключить REST API в WordPress?
Следует заметить, что в последних версиях “движка” REST API был включен в ядро. Это означает, что он задействуется автоматически при установке свежей копии WordPress, добавляя на каждой странице сайта строку <link rel=’https://api.w.org/’ href=’http://site.ru/wp-json/’ />. В принципе если Вы создаете контент исключительно в админ-панели своего сайта, тот этот функционал Вам никчему. Плюс, как видно, на сайте присутствует ненужная внешняя ссылка. Кроме того, этим функционалом успешно пользуются злоумышленники для проведения DDoS-атак, что может отнимать много ресурсов и как следствие — замедлить работу сайта.
Как отключить REST API в WordPress?
Для решения задачи существует несколько способов. Рассмотрим наиболее популярные из них среди WordPress-сообщества.
Способ 1. Плагин Disable REST API
Бесплатный плагин Disable REST API является отдельным решением, которое имеет одно единственное предназначение — отключение на сайте WordPress функционала JSON REST API. Плагин не нуждается в настройке и работает сразу после установки и активации.
Результат работы плагина довольно легко проверить. Для этого нужно открыть любую страницу своего WordPress-сайта и нажать комбинацию клавиш [Ctrl]+[U]. Если в разделе <head> не будет найдена вышеуказанная строка, то можете быть спокойны — REST API был успешно отключен.
Способ 2. С помощью файла functions.php
Этот способ предусматривает редактирование содержимого файла functions.php Вашей активной WordPress-темы.
Если Вы по каким-либо причинам не хотите редактировать functions.php, то в этом случае Вам поможет плагин 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' );
Указанный код не только уберет лишнюю ссылку из шапки Вашего WordPress-сайта, но и полностью отключит функционал REST API.
Способ 3. Плагин Clearfy Pro
Премиум-плагин Clearfy Pro является мощным универсальным решением для оптимизации, ускорения и защиты WordPress-сайтов. Среди его многочисленных функций также существует возможность полного отключения REST API.
Для этого нужно всего лишь в админке перейти в раздел Clearfy Pro, затем на вкладке Код задействовать опцию Отключить JSON REST API и нажать кнопку Сохранить изменения.
Преимуществом использования Clearfy Pro для деактивации JSON REST API является то, что для этого не нужно заниматься правкой каких-либо файлов сайта или поиском отдельных решений, которые часто пишутся непрофессионалами и могут вызывать ошибки.