Вопрос или проблема
Я пытаюсь сделать что-то, и у меня, похоже, не получается найти успешные результаты, ни на форумах wordpress.org, ни здесь.
Я хотел бы расширить стандартный виджет RSS так, чтобы я мог установить имя пользователя/пароль для HTTP-аутентификации для получения элементов ленты.
Если существует готовое решение, которое я упустил и которое уже предоставляет эту функцию, буду признателен за подсказку.
Спасибо.
Существует решение, как описано здесь, где вы можете вставить код в начало wp-includes/feed-rss2.php
, чтобы аутентифицировать, что запрос делает зарегистрированный пользователь WordPress. Лучшее решение – добавить его в файл functions.php
вашей темы:
function my_check_feed_auth() {
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="RSS Feeds"');
header('HTTP/1.0 401 Unauthorized');
echo 'Ленты с этого сайта являются частными';
exit;
} else {
if (is_wp_error(wp_authenticate($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']))) {
header('WWW-Authenticate: Basic realm="RSS Feeds"');
header('HTTP/1.0 401 Unauthorized');
echo 'Имя пользователя и пароль неверны';
exit;
}
}
}
add_action('do_feed_rss2', 'my_check_feed_auth', 1);
add_action('do_feed_atom', 'my_check_feed_auth', 1);
add_action('do_feed_rss', 'my_check_feed_auth', 1);
add_action('do_feed_rdf', 'my_check_feed_auth', 1);
Это потребует базовую аутентификацию, которую большинство RSS-ридеров могут настроить, используя информацию для входа пользователя в WordPress. Вы можете добавить больше лент в конце, используя дополнительные вызовы add_action
, если хотите.
Ответ или решение
Чтобы настроить боковой виджет, который отображает RSS-ленту, требующую аутентификацию по логину и паролю, вы можете расширить стандартный RSS-виджет в WordPress. Ниже приведены шаги, которые помогут вам это сделать:
Шаг 1: Добавьте функцию аутентификации в файл functions.php вашей темы
Откройте файл functions.php
вашей активной темы и добавьте следующий код:
function my_check_feed_auth() {
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="RSS Feeds"');
header('HTTP/1.0 401 Unauthorized');
echo 'Ленты с этого сайта являются частными';
exit;
} else {
if (is_wp_error(wp_authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))) {
header('WWW-Authenticate: Basic realm="RSS Feeds"');
header('HTTP/1.0 401 Unauthorized');
echo 'Имя пользователя или пароль неверны';
exit;
}
}
}
add_action('do_feed_rss2', 'my_check_feed_auth', 1);
add_action('do_feed_atom', 'my_check_feed_auth', 1);
add_action('do_feed_rss', 'my_check_feed_auth', 1);
add_action('do_feed_rdf', 'my_check_feed_auth', 1);
Шаг 2: Добавьте виджет RSS в вашу боковую панель
- Перейдите в админку WordPress.
- В меню выберите "Внешний вид" > "Виджеты".
- Найдите виджет "RSS" и добавьте его в боковую панель.
- Введите URL вашей защищенной ленты RSS, которая требует аутентификации.
Шаг 3: Проверьте работу виджета
После выполнения этих шагов, ваш виджет должен запрашивать имя пользователя и пароль при попытке получить содержимое защищенной RSS-ленты. Пользователи смогут ввести свои учетные данные WordPress, чтобы получить доступ к ленте.
Заключение
Данный подход использует механизм базовой аутентификации, который поддерживается большинством RSS-читалок. Если вы обнаружите, что некоторые RSS-ридеры не поддерживают базовую аутентификацию, возможно, вам потребуется рассмотреть другие методы или плагины, которые могут помочь в решении этой задачи.