Ваш путь: Главная » Сниппеты, хаки, функции » текущая страница

возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено 2021-02-04 в теме: Сниппеты, хаки, функции
Запросто с WordPress создание и продвижение сайтов ATs media

Как отключить ссылку на виртуальную папку wp-json

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

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

 

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

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

 

Внимание!! так как некотоые коды могут не работать с устаревшими версиями php – в статье приведены исправления для новых версий php – на данный момент, это php 8.0 .

 


 

 

 

 

 

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

 

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

 

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

 

 

 

 

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

 

 

 

 

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

 

 

 

виртуальная папка wp-json

 

 

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

 

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

 

 

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

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

 

 

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

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

 

 

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

 

 

 

как убрать строку wp-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

 

 

 

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

 

 

ошибки 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% что либо утверждать невозможно) – думается, будет нелишне… разобраться с вопросом правильного редиректа на домашнюю страничку, чтобы оставалось одно доменное имя:

 

 

 

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

 

 

 


подписка feedburner Online консультация по настройкам и созданию сайтов на 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-чуду и изучить лично, можете пройти по этой ссылке… или тем, которые выше.

 

 

 

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

 

 

 

 

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

 

 

 

 

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

 

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

 

 

 

/** ОПТИМИЗАЦИЯ ШАПКИ САЙТА - ПАГИНАЦИЯ - 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' ); // запрет админбара
/** ФИН ОПТИМИЗАЦИИ ШАПКИ САЙТА **/

 

 

 

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

 

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

 

 

 

 

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

 

 

 

 

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

 

 

<meta name="generator" content="WordPress 9.9.9" />

 

 

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

 

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

 

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

 

 

 

 

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

 

 

 

 

/* защита сайта запрет показа версии движка сайта */
function remove_version() {
return '';
}
add_filter('the_generator', 'remove_version');
/* защита сайта запрет показа версии движка сайта */

 

 

 

Теперь, ради эксперимента и уж коли коснулись защиты сайта, пропишите в адресной строке, например так:

 

 

https://mihalica.ru/wp-content/plugins/

 

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

 

 

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

 

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

 

 

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

 

 

Далее в файле функций пропишите вот такой чудо код (этот код для более ранних версий php: в новых вызовет фатальную ошибку! – для новых версий php, смотрите решение ниже):

 

 

/* уберём подсказку - неправильный логин-пароль - при входе в админку */
add_filter( 'login_errors', create_function( '$a', "return null;" ));
/* уберём подсказку - неправильный логин-пароль при входе в админку */

 

 

 

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

 

 

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

 

 

 

для версии php 8

 

 

 

Код для обновленной версии php – это нынче php 8.0 Подробнее об исправлениях кода шаблонов для обновленных версий php.

 

 

 

//уборка ошибки неправильный логин/пароль для ранних версий php 8

// первый вариант для версии php 8 и пр = будет пустое поле сообщения об ошибке
//add_filter( 'login_errors', fn()=> null );

/* 2 вариант для версии php 8 и пр = с сообщением*/
function no_logs_ats() { return 'Вы совершили ошибку при наборе данных'; }
add_filter( 'login_errors', 'no_logs_ats' );
/*уборка ошибки неправильный логин/пароль*/

 

 

 

 

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

 

 

 

 

И ещё –

 

 

 

запретим показ версии WP в ссылках jquery…

 

 

 

 

Для чего это нужно? …всё для той же защиты! Таким образом мы постепенно избавляемся от следов CMS, на которой(ом)) работает наш сайт.

 

 

Помните !! если вы изначально неправильно подходили к процессу запуска своего сайта и не позаботились об отлаженной и верной работе при запуске проекта – тем проблематичные будет в пути…

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

 

 

 

 

…так вот; если вы внимательно всматривались в исходный код своего молоденького ресурса, то обращали внимание (ближе к началу страницы исходника) скажем, на ссылки jquery – в самом их финале (линка) выведены цифры (нумерация библиотек), в которых содержится нужная нам информация, а вместе с тем и полезная взломщику!

Так вот: мы, как админы, эту инфу и так знаем, а поэтому будет целесообразнее скрыть её от посторонних глаз…

 

 

запретим показ версий в МЕТА ссылках CSS и jquery

 

 

Вот и избавимся от этаких следов.

 

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

 

 

/** убираем версии показа ДВИЖКА из исходного кода, при подключении css и jquery **/
function vc_remove_wp_ver_css_js( $src ) {
if ( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
/** убираем версии показа ДВИЖКА из исходного кода, при подключении css и jquery **/

 

 

 

Можете посмотреть исходный код страницы после нашей редакции: НУМЕРАЦИЯ ВЕРСИЙ – в ссылках на подключение библиотек jquery css и т.д. – будет отсутствовать.

 

 

 

Очень важно !!

 

Прописка кода в файл functions.php, это дело хорошее !! Однако не всё и вся стоит в него пихать – правильнее (и для скорости загрузки в том числе) сгруппировать некоторые циклы кода в оформленном плагине: легко, надёжно и правильно в плане создания сайта.

 

Все доказательства «ЗА» читать:

Вот ссылка – как сделать собственный плагин WordPress – добавочный файл my-functions.php

 

 

Здесь можно скачать простенький плагин (для тех, которые затрудняются с пропиской кода) –

…код функции уборки wp-json и редирект на главную, и многое другое полезное…

 

 

 


На этом занавес представления опускается…
…на рампы пыль печальная ложится…

 

 

 


подписка feedburner Online консультация по настройкам и созданию сайтов на WordPress


!..подписываясь на обновления mihalica.ru
...расстаёмся с невежеством..!


 

 

 

 

Как работать с условными тегами WP: пример на странице пагинации – закрываем в noindex,follow

 

 

 

 

 

 

…Как правильно закомментировать на время код HTML, CSS или PHP, JS

 

 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...





Нажатия на кнопочки определяют Ваше высокое гражданское сознание

Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©


  1. Спасибо. Очень информативная статья.

    Ответить - Nurlan

    • И Вам, Nurlan, спасибо за отзыв!!

      Ответить - Михаил

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

        не действует – всё равно открывается странный урл

        Ответить - Админ

        • А зачем вам этот редирект нужен?
          Данных в статье фильтров вполне хватает)

          Ответить - Михаил

  2. Очень статья помогла, спасибо.
    И это не пустой восторженный отзыв: конкретно нашёл скрипт правильного ридеректа на главный листок сайта.
    Спасибо братишка за то что собрал раскиданную инфу в полезную статью.

    Ответить - КайНиметов

    • И Вам спасибо Ни! за комментарий и слово доброе.

      Ответить - Михаил

      • …а тут перепутал пару раз ссылки с какими-то баннерами что ли…
        так прикидываю не забанят.
        А то ведь не все понимают чисто спасибо на хлебушек не взмазать.
        Мерси))

        Ответить - КайНиметов

  3. Как меня вордпресс достал своими новыми ненужными фишками, вроде и рест апи давно был отключен (кроме rest_output_link_wp_head) и ссылок нет в шаблоне, а яндекс откуда-то все-таки получил ссылку на него и загрузил json-копии всех страниц, хорошо хоть исключено все с индекса, видимо на таких страницах указано что это дубли основных страниц. Теперь добавил еще ваш код редиректа. Спасибо!

    Ответить - Ильдар

    • Пожалуйста, Ильдар!!
      Всего, конечно, не уследить по нашим сайтам… но мы стараемся))
      Удачи в работе, Ильдар!

      Ответить - Михаил

  4. День добрый. Подскажите, есть один давнишний сайт. Заглянул на днях в Я. Вебмастер и увидел там внешние ссылки вот такого рода //take.ms/FCm5B (ссылка на скриншот из Вебмастера)
    Какой в них смысл? Чего опасаться?

    Ответить - Mike

    • Здравствуйте Mike!
      У вас там ясно показано: 1 – /s.w.org и 2 – wp-json/
      …эти ссылки в принципе возможно убрать, отключив функционал генерации (скажем так).
      Насчёт опасения… не знаю, многие эти ссылки убирают. а другие на эти ссылки плюют… (тут вопрос в том, что кому-то функционал этих ссылок требуется, а кому-то нет).
      То, что эти ссылки несут какую-то явную и грубую опасность — сомневаюсь… (так говорит практика))
      P|S
      Как эти ссылки убираются, у меня описано на сайте… wp-json в этой статье, а s.w.org ЗДЕСЬ. Читайте…

      Ответить - Михаил