Intereting Posts
Наличие странной проблемы с WordPress, когда контент не загружается, когда прошло определенное количество Добавить в корзину кнопка woocommerce фон и с не отображается правильно SEO – два веб-сайта WordPress на одном доменном имени Второй foreach в цикле возвращает bool (false), хотя массив присутствует Заказывать сообщения в соответствии с определенным пользователем порядком для метазначений? Включить сеансы WordPress Значение поля Gettext для настраиваемого поля. Есть ли лучший способ проверить новый комментарий? Многостраничный сайт WordPress, разрабатывающий локальные и синхронизирующие изменения в реальном времени Как вмешаться в поиск по умолчанию, чтобы выполнить поиск в пользовательских полях? Заставка экрана в htaccess, теперь ссылки не работают Структура перезаписи URL-адресов и структура навигации для пользовательского типа сообщений WordPress Форма пытается загрузить файл в submit Импорт CSV-файла Используйте WP_Query или query_posts () или get_posts () для оптимизации сайта?

Как защитить или отключить RSS-каналы?

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

Что касается того, какие корма существуют, я знал, по крайней мере, эти ссылки …

http://example.com/comments/feed/ http://example.com/feed/ 

Таким образом, в дополнение к основному вопросу, я также немного обеспокоен: действительно ли этот код поймает все доступные каналы? И действительно ли это способ отключить все каналы?

Я знаю, что поддержка плагинов здесь не в тему. Однако, для некоторого контекста / в качестве сноски, я использую следующую комбинацию соответствующих движущихся частей:

  • WordPress 4
  • Создать тему
  • Плагин групп

Мне удалось обеспечить доступ к страницам и сообщениям в блоге с помощью плагина. Однако, когда пользователи, не прошедшие проверку подлинности, посещают URL-адрес фида, он по-прежнему показывает контент. Поскольку плагин, похоже, не может сделать то, что я хочу, я решил написать код для этого.

(Я просмотрел страницу « Внешний вид»> «Создать», но ничего не активировано. Я также просмотрел страницу « Внешний вид»> «Настроить» (и все настройки), но ничего не нашел. Наконец, я перечитал «Группы» «Параметры плагина несколько раз, но не найдено ни одного параметра.)

Как указано в комментариях @kaiser, ваш вопрос очень похож на этот вопрос . На самом деле сам вопрос содержит ответ. Чтобы отключить все каналы, добавьте следующий код …

 function itsme_disable_feed() { wp_die( __( 'No feed available, please visit the <a href="'. esc_url( home_url( '/' ) ) .'">homepage</a>!' ) ); } add_action('do_feed', 'itsme_disable_feed', 1); add_action('do_feed_rdf', 'itsme_disable_feed', 1); add_action('do_feed_rss', 'itsme_disable_feed', 1); add_action('do_feed_rss2', 'itsme_disable_feed', 1); add_action('do_feed_atom', 'itsme_disable_feed', 1); add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1); add_action('do_feed_atom_comments', 'itsme_disable_feed', 1); 

… в пустой плагин и активировать этот плагин. Это должно помешать кому-либо получить доступ к действию фида.

Обратите внимание, что выше приведен пример кода, желательно, чтобы вы не wp_die а перенаправляли или использовали 404 вместо этого.

Основываясь на функции add_feed , вот прототип реализации remove_feed :

 /** * Remove a feed type like /atom1/. * * @global WP_Rewrite $wp_rewrite * * @param string $feedname Feed name. * @return string Feed action name. */ function remove_feed( $feedname ) { global $wp_rewrite; if ( in_array( $feedname, $wp_rewrite->feeds ) ) { $wp_rewrite->feeds = array_diff( $wp_rewrite->feeds, array( $feedname ) ); } $hook = 'do_feed_' . $feedname; // Remove default function hook remove_all_actions( $hook ); add_action( $hook, $hook ); return $hook; } 

Применение:

 remove_feed( 'rss' );