Как убрать служебные ссылки с WP-JSON из исходного кода страниц вашего блога на WordPress

…я давно в исходном коде страниц своего сайта обратил внимание на непонятную (для себя) ссылку и папку (виртуальную директорию) wp-json в Яшкином веб мастере. Сначала как-то тревожило, но дальше-больше, по мере изучения вопроса, опасность развеивалась: ибо более-менее прояснялись цели разработчиков этого программного обеспечения.

Разработчики же вывели новый API REST на внутреннюю сцену ядра WordPress. Зачем? Бес их знает! Однако понятно одно, это для них целесообразно в плане развития движка. Замечательно!

Спрашивается: целесообразно ли мне какое-то не совсем понятное ПО в кодах моих сайтов..!?

Об этом и потолкуем:

…весьма недвусмысленно наблюдается отношение создателей WP к своей cms-клиентуре: ясно, что они преследуют свои цели, мягко говоря, мало заботясь о пользователях wp. Это тоже, в общем — нормально! Иначе ни о каком развитии не может быть и речи.

Читайте также:  Как заработать на фотографиях? Проверяем биржу PhotoLife

Что же остаётся нам!? а нам необходимо как-то подстроиться в течение времени, под паровой ход корабля Вордпресс…

…касаемо же нашей проблемы, то она замечательным образом решается (пространно болтать о своих изысканиях относительно API json вряд ли нужно, ибо уже много и доступно пояснено коллегами, ссылки ниже) а посему приступим, и перейдём к разделу:

к оглавлению

как отключить ссылку wp-json

Если вы заходили к себе в веб инструментарий Яндекса, то в проиндексированных страницах наблюдали нечто похожее: а именно, среди прочего ссылочного пути некоторых линков встречается вензель wp-json

Я показываю то, что было у меня в вебмастере: вот проиндексированная ссылка…

Так вот …если вы кликните там у себя подобную ссылку — вас перенесёт в довольно-таки странное окно браузера: откроется страничка сплошь уписанная строками кода…

Кстати сказать, этот самый код программного обеспечения API REST несёт в себе всю информацию сайта, которую в свою очередь легко считывают приложения — удалённо.

Однако, как говорится — вопрос пользы API для многих пользователей, остаётся открытым).

В общем вряд ли есть смысл любоваться этакой изысканностью программного письма…

Кому интересно, можете начать изучение json хотя бы с этого … или с этого…

Ещё вот — такая скринка «структуры» сайта (всё в том же вебмастере Яшки), правда, не очень качественная, но для наглядности сойдёт.

По картинке видно, сколько роботом яндекс обследовано json страничек, загружено/проиндексировано и процентная «доля страниц» в индексе.

Но — поехали))

ПАМЯТКА:
…напоминаю всякий раз: заведите какой-то документ «запоминалку» всех совершаемых эксов с блогом. Копируйте редактируемые файлы. Пригодится!

Поверьте: так короче до профессионализма, ибо возможность переварки накопленных крупиц знаний в кашу маловероятна!

Остаётся только открыть легендарный файл functions.php и где-то перед ?> прописать следующие немаленькие строчки кода.

Кстати же, о файле функций, ниже будет очень полезная ссылка на статью, где научимся писать свой собственный плагин: в который правильнее перенести часть кода, направленного на регулировку параметров ядра WP — в шаблоне этот код не нужен! и пихать всё что ни поподя в functions.php не нужно!!

Читайте также:  Проверка изображений на уникальность. Способы сделать картинку уникальной

После того как установите нижепоказанный) код и… сразу же, кликнув по ссылке в панели web мастера Яндекс — вас перебросит на главную страницу вашего же сайта, но не страничку с кодом, о которой говорилось выше…

Вот так вот..!

/** ЧИСТОТА ШАПКИ САЙТА уборка wp-json **/ //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 ); // Отключаем сам REST API add_filter(‘rest_enabled’, ‘__return_false’); // Отключаем фильтры 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 ); // Отключаем события REST API remove_action( ‘init’, ‘rest_api_init’ ); remove_action( ‘parse_request’, ‘rest_api_loaded’ ); remove_action( ‘rest_api_init’, ‘rest_api_default_filters’, 10, 1 ); // Отключаем 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 ); remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’ ); // если будете выводить вставки из других сайтов на своем, то закомментируйте строку ниже //remove_action( ‘wp_head’, ‘wp_oembed_add_host_js’); /** ЧИСТОТА ШАПКИ САЙТА уборка wp-json**/

wp_oembed_add_discovery_links ()

Добавляет oEmbed ссылки открытие в веб-сайте.

Исходный файл: WP-включает / embed.php

(немного отвлекусь)

к оглавлению

Что такое WP JSON и как его отключить и удалить

WP JSON — это сокращение от WordPress JSON REST API. Описание сложное, поэтому объясню проще — это функционал, с помощью которого для WordPress можно написать приложение на абсолютной любой платформе и на любом языке, и с помощью этого приложения управлять сайтом — добавлять, изменять и удалять содержимое, настраивать темы, меню, виджеты и прочее.

В общем, из всего этого описания вам должно быть ясно, что wp-json — пока что совершенно лишнее на вашем сайте, и его надо отключать. К тому же, Яндекс любит выкидывать wp-json в индекс как подраздел сайта. Конечно, это лечится с помощью закрытия от индексирования /wp-json/ в robots.txt, но, всё же, лучше отключить и настроить выдачу ошибки 404 Not Found по этому адресу.

Что неприятно, если не закрыть /wp-json/, то он предоставляет возможность любым ботам вызнавать довольно конфиденциальную информацию о пользователях. Например, по такому адресу будет выдана информация о пользователях сайта с их личными данными: логин, email и прочее, что там указывается.

Чтобы избежать выдачи информации по пользователям WordPress, не отключая WP REST API, можно воспользоваться следующим кодом:

// Отключаем функционал по пользователям в WP REST API add_filter( ‘rest_endpoints’, function( $endpoints ){ if ( isset( $endpoints[‘/wp/v2/users’] ) ) { unset( $endpoints[‘/wp/v2/users’] ); } if ( isset( $endpoints[‘/wp/v2/users/(?P[d]+)’] ) ) { unset( $endpoints[‘/wp/v2/users/(?P[d]+)’] ); } return $endpoints; });

Отключая функционал WordPress REST API, помните, что его используют некоторые популярные плагины, например Contact Form 7 и Yoast SEO. Поэтому, если вдруг у вас перестала работать форма обратной связи, посмотрите, а не отключен ли REST API?

Есть 2 способа избавиться от wp-json, плагин и код.

Читайте также:  Рейтинги сайтов и блогов — куда стоит добавить свой сайт, блог или форум

Отключаем WP JSON REST API с помощью плагина Disable REST API

Для отключения wp-json можно воспользоваться плагином Disable REST API, так как его автор будет поддерживать код в актуальном состоянии в зависимости от возможных изменений в будущих версиях движка WordPress.

Плагин WordPress для отключения wp-json - Disable JSON API

Плагин WordPress для отключения wp-json — Disable JSON API

Плагин, конечно, функционал JSON REST API отключит, но вот от раздела /wp-json/ на сайте не избавит. Поэтому, этот вариант немного не то, что нам надо. Идём дальше.

Код для отключения и удаления wp-json и oembed в WordPress

Код взят из разных источников, в основном отсюда, и в том числе, и из вышеуказанного плагина

/* * Отключаем wp-json * * https://sheensay.ru/?p=2044 */ // Отключаем WP-API версий 1.x add_filter( ‘json_enabled’, ‘__return_false’ ); add_filter( ‘json_jsonp_enabled’, ‘__return_false’ ); // Отключаем WP-API версий 2.x add_filter( ‘rest_enabled’, ‘__return_false’ ); add_filter( ‘rest_jsonp_enabled’, ‘__return_false’ ); // Удаляем информацию о REST API из заголовков HTTP и секции head remove_action( ‘xmlrpc_rsd_apis’, ‘rest_output_rsd’ ); remove_action( ‘wp_head’, ‘rest_output_link_wp_head’, 10 ); remove_action( ‘template_redirect’, ‘rest_output_link_header’, 11 ); // Отключаем фильтры REST API remove_action( ‘xmlrpc_rsd_apis’, ‘rest_output_rsd’ ); 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 ); // Отключаем события 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 ); // Убираем oembed ссылки в секции head remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’ ); // Если собираетесь выводить oembed из других сайтов на своём, то закомментируйте следующую строку remove_action( ‘wp_head’, ‘wp_oembed_add_host_js’ ); // Редиректим со страницы /wp-json/ на главную add_action( ‘template_redirect’, function() { if ( preg_match( ‘#/wp-json/.*?#’, $_SERVER[‘REQUEST_URI’] ) ) { wp_redirect( get_option( ‘siteurl’ ), 301 ); die(); } } );

Код вставляется в functions.php или mu-plugin (желательно).

Результат: вы полностью отключите механизм wp-json

на сайте, в поиске будут отсутствовать мусорные страницы, а страница будет отдавать ошибку 404 Not Found

ошибки REST API с обновлением WordPress 5.0 …и пр.

Теперь REST API используется в админке WordPress!!

WordPress 5.0 — обновление: если вы обновились до версии 5.0 … то следует внимательнее отнестись к коду выше! иначе, к примеру, новый редактор Гутенберг не будет работать так, как нужно: будут ошибки!

…а именно внимательнее приглядитесь к строкам (это если вам всё-таки необходимо отключать REST запросы как-то выборочно /хотя отключение не рекомендовано/) — тогда стоит закомментировать указанные ниже строки в КОДЕ ВЫШЕ:

remove_action( ‘init’, ‘rest_api_init’ );

и…

remove_action( ‘parse_request’, ‘rest_api_loaded’ );

…а вот таким способом возможно отключить REST запросы для неавтаризованных пользователей (в том числе и публичные запросы):

add_filter( ‘rest_authentication_errors’, function( $result ) { if ( ! empty( $result ) ) return $result; if ( ! is_user_logged_in() ) return new WP_Error( ‘rest_not_logged_in’, ‘You are not currently logged in…’, array( ‘status’ => 401 ) ); // Вы еще не вошли в систему… return $result; });

Этот вариант наиболее приемлем!

…продолжаем:

…после того как вас (после клика в вебмастере) перенесло на главную страничку сайта, обратите внимание на путь (ссылку) в адресной строке браузера, которым, в этом случае, обозначена главная страничка!

Так вот-с! …странная будет ссылка. И хотя вряд ли кто-то и когда-то будет переходить по этой «замысловатой» ссылке (в том числе и поисковики) ибо отработка, скажем так, виртуальной папки и ссылки wp-json вследствие прописки нашего кода будет заказана (link из исходника и т.п. пропадёт) но порядка для (всё-таки 100% что либо утверждать невозможно) — думается, будет нелишне… разобраться с вопросом правильного редиректа на домашнюю страничку, чтобы оставалось одно доменное имя:

к оглавлению

WP-JSON как отключить

Все началось с того, что заметил в Яндекс Вебмастер вот такую ссылку, прямо скажем 18+ содержания. Которая ссылалась на папку /wp-json/ моего сайта:

Читайте также:  Заработок на просмотре видео. Сколько и как можно заработать.

Это не взлом, таким образом дорвейщики берут данные вашего сайта для своих доров. Не смертельно, но неприятно. Да и не понятно как отнесется сам Яндекс к таким ссылкам на ваш сайт.

Если не отключить wp-json, то он дает возможность узнать конфиденциальную информацию о пользователях.

Например, по адресу ранее выдавалась информация о админах и авторах сайта с их личными данными: логин, 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 );

// Отключаем сам 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 );
Отключая функционал WordPress REST API, помните, что его используют некоторые популярные плагины, например Contact Form 7. Поэтому, если вдруг у вас перестала работать форма обратной связи, посмотрите, а не отключен ли REST API?

Если у вас на сайте стоит плагин Yoast SEO, то в коде страницы вы обнаружите еще одно упоминание json:

Разметка json

Это вариант микроразметки JSON-LD предлагаемый плагином SEO by Yoast в качестве бонуса. Большинство сайтов по умолчанию используют микроразмектку schema.org и от данного скрипта json можно отказаться поместив в functions.php следующий код:

// Убираем function remove_json_ld_output( $data ) { $data = array(); return $data; } add_filter(‘wpseo_json_ld_output’, ‘remove_json_ld_output’, 10, 1);

// Убираем function remove_json_ld_output( $data ) { $data = array(); return $data; } add_filter(‘wpseo_json_ld_output’, ‘remove_json_ld_output’, 10, 1);
Перед использованием не забываем обновить кеш.

как правильно настроить редирект с https://mihalica.ru/wp-json/ на главную

Online консультация по работе c сайтом на WordPress

Пропишите и этот код в файл functions.php…

Редирект…

/** редирект на главную wp-json **/ add_action( ‘template_redirect’, function() { if ( preg_match( ‘#^/wp-json/(.*)#’, $_SERVER[‘REQUEST_URI’] ) ) { wp_redirect( get_option( ‘siteurl’ ), 301 ); die(); } } ); /** ФИН редирект на главную wp-json **/

…и вновь кликнете в веб мастере по ссылке…

Теперь адресом заглавной страницы сайта будет чистое доменное имя.

Вот таким нехитрым способом мы убрали волнующие ссылки API REST из исходного кода блога/сайта.

как эпилог:

Я прекрасно жил совместно с API json с того момента как заведую этим блогом (месяцев семь): никаких явновыражанных ошибок и багов не наблюдал. В веб мастере да, в «структуре сайта» эта виртуальная папка присутствовала во всей красе… но, ещё раз повторюсь, никаких явных нарушений работы сайта не усмотрел… кроме тревоги от надуманных тысячных дублей страниц, однако — многие о них в сети говорят, и толкуют скрижали апи скрипта по-своему…

В общем, лично для меня было не принципиально убирать JSON api, возможно, ошибаюсь… но, как говорится, до конца ещё не разобрался с целесообразностью API лично для себя, а посему было бы странно уверенно говорить о каких-то явных вредах или пользах)) связанных с этим программным обеспечением.

Как говорится, каждому решать сообразно со своими целями.

Так что принятие решения убрать/оставить json полностью зависит лично от вас! Я ради экса убрал: теперь понаблюдаем-с…

Технические инструкции json rest изучал в англоязычном сегменте… Вы же, коли есть желание посмотреть в глаза API-чуду и изучить лично, можете пройти по этой ссылке… или тем, которые выше.

В качестве дополнения к статье:

к оглавлению

Как убрать json rest api

Чтобы убрать тег link с подключением wp-json, использую два метода: с помощью плагина и кодом.

Плагин Clearfy PRO

Наши специалисты в Clearfy PRO учли особенность WordPress и включили пункт по удалению. Переходим в раздел КОД, отмечаем в зеленую зону соответствующий переключатель. Для всех читателей WPCourses скидка 15%.

Страница плагина

Включение настройки отключения в clearfy
Настройка

После деактивации ссылка с тегом link исчезнут из раздела head.

Есть еще плагин Disable REST API, но работающий не со всеми темами. Испытывал на нескольких шаблонах, бывало не срабатывал. Но имеет настройку для страниц и таксономий с архивами где можно выводить rest и json. Для лучшего понимания материала добавил авторское видео.

С помощью кода в function.php

Есть универсальный код, удаляющий подключение из WordPress. Вносим его через дочернюю тему через FTP соединение, иначе можете получить неработающий сайт на долгое время.

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’ );

Помещаем вниз файла function.php активной темы. Покажу через админку WP, но вы делаете через FTP с помощью специальной программы редактора кода. Аналогичным способом удаляются страницы вложений в вордпресс.

Отключаем rest json api с помощью функций и хуков в WordPress
Вставка функций в function

Результат работы будет аналогичным, но если вы новичок, то лучше использовать 100% способ с помощью Ckearfy PRO. На этом статью закончил, узнали, что такое json rest api WordPress, научились его удалять из исходного кода как ненужное дополнение.
Пожалуйста, оцените материал:

как скрыть версию WordPress — удаляем ненужные элементы wp_head

к очистке шапки сайта и личной совести)) чтобы удалить все теги функции wp_head (или почти все…) пропишите в файл функций строки показанные ниже…

Пояснения в комментариях:

Читайте также:  Где и как можно заработать певцу или музыканту — 4 способа и примера из жизни

/** ОПТИМИЗАЦИЯ ШАПКИ САЙТА — ПАГИНАЦИЯ — All In One SEO Pack **/ function my_remove_prev_link( $data ) { return false; } add_filter( ‘aioseop_prev_link’, ‘my_remove_prev_link’ ); //убр. навиг — листалка главной страницы add_filter( ‘aioseop_next_link’, ‘my_remove_prev_link’ ); //убр. навиг /** ОПТИМИЗАЦИЯ ШАПКИ САЙТА — ПАГИНАЦИЯ — All In One SEO Pack **/

…и ещё…

/** ОПТИМИЗАЦИЯ ШАПКИ САЙТА **/ remove_action( ‘wp_head’, ‘feed_links_extra’, 3 ); // откл доп фид лент remove_action( ‘wp_head’, ‘feed_links’, 2 ); remove_action( ‘wp_head’, ‘rsd_link’ ); // откл доп фид лент remove_action( ‘wp_head’, ‘wlwmanifest_link’ ); // ссылки главную страницу, первый пост, следующий, предыдущий remove_action( ‘wp_head’, ‘index_rel_link’ ); remove_action( ‘wp_head’, ‘start_post_rel_link’, 10, 0 ); remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 ); remove_action( ‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0 ); // ссылки главную страницу, первый пост, следующий, предыдущий remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0 ); // Убираем связанные ссылки remove_action( ‘wp_head’, ‘wp_generator’ ); // запрет показа версии вордпресс remove_action( ‘wp_head’, ‘wp_shortlink_wp_head’, 10, 0 ); // Короткая ссылка, ссылка без ЧПУ //add_filter( ‘show_admin_bar’, ‘__return_false’ ); // запрет админбара /** ФИН ОПТИМИЗАЦИИ ШАПКИ САЙТА **/

…только посмотрите внимательнее у себя в файле, сравните — не подключены ли у вас уже какие-то подобные функции (из строк показанных выше).

Дублировать не нужно!

к оглавлению

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

Как и обычно, добавляем следующий код в конец файла «functions.php» в теме. Сделать это можно в редакторе темы WordPress или напрямую в файле через FTP на сервере например.

Внимание!!! Данный метод может сломать работу некоторых планигов и в целом работу json (Например Contact From 7). Обязательно сделайте полный бекап перед изменением файлов!!!

// Отключаем сам REST API add_filter(‘rest_enabled’, ‘__return_false’); // Отключаем фильтры 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 ); // Отключаем события 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 ); remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’ );

В результате ссылка вида «
» должна пропасть из кода страницы.

как убрать полностью показ cms сайта (generator) и его версию

Обратите внимание на строку 13 в коде показанном выше… Посредством этой строки мы уберём следующий метатег в исходном коде:

Вообще, стоило бы для начала поработать с файлом вашей темы header.php но касательно этой темы у меня написаны иные статьи…

Для чего все эти «закрывашки» нужны, думаю, вам известно!

…а значит пойдём дальше… ибо многие на этом этапе СКРЫТИЯ CMS останавливаются: рекомендую дочитать статью до финала!

к оглавлению

как убрать отображение версии движка из фида-ленты

/*** защита сайта запрет показа версии движка сайта ***/ function remove_version() { return »; } add_filter(‘the_generator’, ‘remove_version’); /*** защита сайта запрет показа версии движка сайта ***/
Теперь, ради эксперимента и уж коли коснулись защиты сайта, пропишите в адресной строке, например так:

ИЛИ https://mihalica.ru/wp-content/

!! Окно браузера должно быть пусто !! …и если у вас не так… …то вот — чтобы ваш сайт был защищён от взлома, читайте здесь!

Не забудьте при тестировании своего сайта поменять имя моего домена на свой)

Ну и заодно уж не дадим взломщику-новичку, при его входе в админку, информацию о том что из: логин или пароль подобраны не правильно!

Далее в файле функций пропишите вот такой чудо код:

/** уберём подсказку — неправильный логин-пароль — при входе в админку **/ add_filter(‘login_errors’,create_function(‘$a’, «return NULL;»)); /** уберём подсказку — неправильный логин-пароль при входе в админку **/

Обратите внимание на стрелку и сравните у себя! поле при ОШИБОЧНОМ ВХОДЕ должно быть чисто — инфа удалена…

А вот об изменени самого адреса входа в адмипанель, читайте в этой статье о плагине Better WP Security…

И ещё —

к оглавлению

Делаем AJAX-запросы правильно

Большинство программистов в WordPress превратно понимают суть и работу AJAX. Все из-за залипания в словах. Есть у WordPress механизм admin-ajax, который хорошо документирован и 99% программистов уверены что AJAX надо делать через него.

«Эксперты» пишут статьи о том как это применять и почти ни у кого не возникает сомнений в адекватности такого решения.

А засада и ошибка заключается в том что admin-ajax был придуман для работы в админке. Там срабатывает тег is_admin. Тянется куча лишних файлов, кода и функционала. Для большинства маленьких сайтов ничего страшного, но если у вас более менее сложный сайт, на который приходит много функционала и трафика, то таким образом можно получить тормоза. А тормоза часто могут прибить сайт или испортить впечатление Клиентов о работе с вами.

Команда WooCommerce об этом знали, и еще до внедрения REST API — использовали правильный механизм работы с AJAX с фронта. См как работает класс WC_AJAX.

С приходом REST API у всех появилась возможность делать AJAX в WordPress правильно. Но стереотипы, шаблоны и привычки не дают этого. Многие до сих пор фигачат AJAX через admin ajax )

WP JSON, что это такое и как отключить?

WP JSON API — это интерфейс для управления сайтом. По сути, он создаёт определённые способы взаимодействия с сайтом: совместная работа, удалённое управление, программный интерфейс для работы без входа в админ панель.

Простому пользователю этой API, может выйти боком. Вот пример негативной стороны использования: странные выдачи Яндекса с каким-то кодом внутри и адресом вида */wp-json/. Конечно, можно вылечить эту проблемы запретом в robots.txt, но мне думается, что правильнее будет отключить эту функцию.

Для удаления WP JSON нужно вставить следующий код в functions.phpвашей темы оформления:

Показать / Скрыть

В результате получили:

Wp-json полностью отключён, удалена ссылка в head и сама служебная страница example.com/wp-json/. Уменьшили вероятность появления мусора в поисковой выдачи.

Что такое wp json oembed и какую опасность он несет для блога.

Разработчики внедрили новый интерфейс REST API под управлением, которого и работает wordpress CMS. При помощи данного интерфейса, в будущем, будет обеспечен доступ к нашему сайту через специальные приложения.

WordPress REST API – это общий интерфейс данных и программирования, который позволяет считывать и записывать информацию в WordPress через разные приложения. Теперь разработчикам, которые нацелены на работу с WordPress, не понадобится углубленно разбираться в WP. Разработчики смогут выполнять практически все функции управления данными и считывания данных, которые возможны в PHP, воспользовавшись новым API.

Это сделано с перспективой на развитие, таким образом разработчики будут получать доступ к данным наших сайтов через специальные приложения. Вот только они совершенно не задумались о том, что это привело к созданию дублей страниц, которые с хорошим аппетитом кушает Яндекс.

Если мы введем в адресной строке браузера https://site.ru/wp-json, то нас перекинет на непонятную XML-страницу, или на копию главной страницы сайта. И что самое страшное, что роботы данную страницу благополучно индексируют. Это может привести к проблемам ранжирования сайта, наложению санкций и фильтров от поисковиков. Поэтому, желательно срочно исправить данную проблему.

Wp json oembed — непредвиденные дубли страниц сайта по вине разработчиков WordPress!

Ну, что дорогие друзья? Приступим!

Как и все себя уважающие блоггеры, я предостерег свой сайт от появления дублей страниц, еще когда создавал robots.txt. К стати, если Вы не знаете или забыли как сделать правильный robots.txt для сайта, то посмотрите вот здесь. Но сейчас не об этом!

Так вот, сделал я правильный robots.txt для своего блога и успокоился на этом думая, что все будет хорошо. Так и было до некоторых пор, пока наш любимый WordPress не обновился до версии 4.4. Вот тут-то и началось невообразимое …!

Как-то открываю webmasters.yandex.ru, чтобы очередной раз проверить свой блог и что я вижу?! Неимоверное множество страниц (более 1000) в директории wp-json/ и oembed/, которые Яндекс загрузил к себе и начал их индексировать. Но я же не писал столько статей! Да даже физически бы не смог за такой короткий промежуток времени!!! Откуда они взялись?

Все оказалось довольно просто! Как позже я смог выяснить, после очередного очередного обновления WordPress до версии 4.4 они (дубли страниц) и появились.

Хорошо, но что же делать с этим wp json oembed и как удалить дубли страниц с сайта?

Как удалить ссылки link rel?

Первое, на что у меня хватило ума — это удалить эти ссылки. Для этого в function.php прописал немного кода. Нашел это на англоязычном сайте, там уже пошла паника по этому поводу и кто-то предложил такой способ решения проблемы:

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 );

Но проблема до конца не была решена, хотя ссылки пропали, сами виртуальные страницы остались. Немного покопавшись в интернете я нашел решение этого вопроса у одного известного блогера.

wp json

Не успело 06.04.2016 произойти обновление поисковой системы Яндекс как многие владельцы сайтов на системе управления wordpress версии 4.4 и выше заметили странные изменения в панели вебмастера Яндекс. А именно, что-то вроде:

  • Резко выросло количество загруженных роботом страниц.
  • Структура сайта изменилась.
  • А ведь мы там ничего не меняли.
  • Появилась непонятная директория wp-json с подкатегориями oembed , /1.0/, embed.

И если Вы откроите url https://ваш_сайт/wp-json то наверняка увидите нечто вроде
И так, что такое wp-json? Изучив внимательнейшим образом сее творение разработчиков wordpress смею Вас заверить что не стоит бить во все колокола и поднимать панику. Это не вирус. Это, прежде всего виртуальная директория для API REST для CMS WordPress версии 4.4 и выше.

Таким образом, разработчики wordpress внедряют в свое творение новый, плагин для удобного доступа к данным Вашего сайта с помощью HTTP RESET API. Подробности Вы можете изучить на странице разработчика https://v2.wp-api.org/.

Но мы не будем вдаваться в подробности и технические сложности данной инновации. Смущает другое. Почему разработчики wordpress не позаботились о закрытии служебных директорий и оставили их открытыми для поисковых систем? Как избавится от непонятных и не желательных ссылок в поисковой выдаче? А ведь многие сайты Яндекс уже успел проиндексировать!

Не стану, долго рассказывать и объяснять к каким негативным последствиям это может привести. Я надеюсь, что Вы это и сами прекрасно уже поняли и жаждите подробностей, как от этой напасти избавится. Не стану Вас томить и подробно расскажу что нужно делать если ваш сайт стал жертвой технического упущения разработчиков WordPress.

Запрещаем вывод кода в functions.php

Для этого в файле functions.php вашей темы пропишите следующее:

// Отключаем сам REST API

add_filter(‘rest_enabled’, ‘__return_false’);

// Отключаем фильтры 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 );

// Отключаем события 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 );

Выполнив перечисленные выше действия, мы добилиcь лишь того что закрыли от индексации нежелательные ссылки и теперь вместо страшного и непонятного кода перейдя по ссылкам:

  • https://ваш_сайт/wp-json
  • https://ваш_сайт/wp-json/oembed/
  • https://ваш_сайт/wp-json/oembed/1.0/
  • https://ваш_сайт/wp-json/oembed/1.0/embed/

Вы можете наблюдать главную страницу сайта. Кроме того мы избавились от нежелательной ссылки на https://v2.wp-api.org/ в ответе сервера.

И все вроде в порядке, НО!!! Мы получили нежелательные дубли главной страницы сайта. Самое время поправить и этот нюанс.

Удаление WP-JSON из WordPress 4.4

Собственно, приведу сразу решение. Естественно, что оно придумано не мною (а взято отсюда и отсюда). Все как обычно делается через нашу палочку-выручалочку, а именно файлик Функшион.пхп, который вы наверняка найдете в папке, где живет ваша тема оформления (подключившись к сайту по ФТП через Файлзилу, например).

Код, который отключает все это безобразие с WP-JSON, выглядит довольно-таки объемно, но работает, т.е. удаляет все лишние строки из шапки (служебной области) страниц вашего сайта, а также WordPress больше не будет генерировать все эти страницы с WP-JSON, которые радостно кушает Яндекс:

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 ); 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’ );

Код можно вставлять в любое место functions.php, где заканчивается какая-нибудь функция (после точки с запятой). Если что-то пойдет не так, то просто откатитесь назад (в редакторе кода типа Нотепада с плюсом это сделать не сложно) и попробуйте вставить в другом месте. С файлзилой сделать это будет не сложно, а вот при использовании внутреннего редактора темы в админке WordPress придется все удалять и восстанавливать вручную, что не есть хорошо.

Если после вставки кода сайт продолжает успешно открываться (а если нет?), то откройте какую-нибудь страницу и посмотрите ее исходный код (если используете кеширование в WordPress, то сбросьте кеш). По идее, все строки с WP-JSON должны будут исчезнуть:

Что такое WP-JSON? Не знаю, а читать об этом на англицком очень уж сложно для меня. Хотя, если кто-то в комментах по-русски и для «тупых» попытается объяснить, то почитаю с удовольствием.

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

Яндекс.Метрика