Все началось с того, что заметил в Яндекс Вебмастер вот такую ссылку, прямо скажем 18+ содержания. Которая ссылалась на папку /wp-json/ моего сайта:
Это не взлом, таким образом дорвейщики берут данные вашего сайта для своих доров. Не смертельно, но неприятно. Да и не понятно как отнесется сам Яндекс к таким ссылкам на ваш сайт.
Например, по адресу https://siteask.ru/wp-json/wp/v2/users/ ранее выдавалась информация о админах и авторах сайта с их личными данными: логин, gravatar и пр.
WP JSON — это сокращение от WordPress JSON REST API. Эта функция появилась в WordPress начиная с версии 4.4. Простым языком — это функционал, с помощью которого для WordPress можно писать приложения на разных платформах и на разных языках, и с помощью этого приложения управлять сайтом: добавлять, изменять и удалять содержимое, настраивать темы, меню, виджеты и прочее.
Для большинства пользователей wp-json — совершенно не нужен и даже вреден. Яндекс любит брать wp-json в индекс как подраздел сайта. Это конечно легко лечится закрытием от индексирования /wp-json/ в robots.txt, но лучше отключим эту функцию и настроим редирект с /wp-json/ на главную страницу.
Для этого добавим в файл functions.php вашей темы WordPress следующий код:
// Отключаем сам REST API add_filter('rest_enabled', '__return_false'); // Отключаем события REST API remove_action( 'init', 'rest_api_init' ); remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 ); remove_action( 'parse_request', 'rest_api_loaded' ); // Отключаем Embeds связанные с REST API remove_action( 'rest_api_init', 'wp_oembed_register_route' ); remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 ); // Отключаем фильтры REST API 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 ); //Отключаем type="application/json+oembed" remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); remove_action( 'wp_head', 'rest_output_link_wp_head' ); remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 ); |
Если у вас на сайте стоит плагин Yoast SEO, то в коде страницы вы обнаружите еще одно упоминание json:
Это вариант микроразметки JSON-LD предлагаемый плагином SEO by Yoast в качестве бонуса. Большинство сайтов по умолчанию используют микроразмектку schema.org и от данного скрипта json можно отказаться поместив в functions.php следующий код:
// Убираем <script type='application/ld+json'> function remove_json_ld_output( $data ) { $data = array(); return $data; } add_filter('wpseo_json_ld_output', 'remove_json_ld_output', 10, 1); |
Перед использованием не забываем обновить кеш.