…я давно в исходном коде страниц своего сайта обратил внимание на непонятную (для себя) ссылку и папку (виртуальную директорию) 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
Плагин, конечно, функционал 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-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%.
Страница плагина
Настройка
После деактивации ссылка с тегом 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 с помощью специальной программы редактора кода. Аналогичным способом удаляются страницы вложений в вордпресс.
Вставка функций в 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? Не знаю, а читать об этом на англицком очень уж сложно для меня. Хотя, если кто-то в комментах по-русски и для «тупых» попытается объяснить, то почитаю с удовольствием.