Вопрос или проблема
Я хотел бы заблокировать весь сайт WordPress (все страницы, все посты, весь контент, который я добавлю в будущем) с помощью страницы входа, как это сделано, например, здесь (очистите ваши cookies) http://facebook.com.
Как достичь этой функциональности?
Вы можете использовать плагин Absolute Privacy для вашей цели.
Этот плагин превращает ваш блог WordPress в полностью частный сайт, где вы контролируете, кто имеет доступ. Это идеально подходит для семейных блогов, частных сообществ и персональных веб-сайтов. Вы можете заблокировать весь сайт или создать зону только для участников, модерировать новые регистрации, заставлять пользователей вводить имя/фамилию и выбирать пароль при регистрации и многое другое!
Надеюсь, это поможет вам.
Очень простой способ быстро защитить ваш сайт WordPress единственным паролем. Этот плагин защищает только контент, созданный через WordPress. Он не защищает изображения или загруженные файлы, так что если ввести точный URL к файлу изображения, он все равно будет доступен.
Вы можете принудительно запрашивать вход, выполняя следующие действия:
- создать функцию, которая перенаправляет пользователей на страницу входа,
- создать функцию, которая перенаправляет пользователей на изначально запрошенную страницу, и
- добавить эти функции в пользовательский плагин.
Шаг №2 является необязательным. Но это может быть более удобно для пользователей.
Используйте код ниже в пользовательском плагине.
Функция forced_login (с вызовом add_action()) предназначена для первого шага. Функция redirected_login (с вызовом add_filter()) предназначена для второго (необязательного) шага.
Функция forced_login
/**
* template_redirect Action Hook: Перенаправляет незарегистрированных пользователей на страницу входа,
* используя URL, возвращаемый функцией wp_login_url().
*
* Пользовательский параметр запроса 'login_redir' используется для перенаправления пользователей
* на изначально запрошенную страницу. Этот параметр является необязательным и может быть удален, если после входа
* пользователи всегда должны быть перенаправлены на стандартную страницу. Если удалить, условие будет выглядеть так:
* if ( wp_safe_redirect( esc_url( wp_login_url() ) ) )
*
*/
function forced_login() {
if ( ! is_user_logged_in() ) {
nocache_headers();
if ( wp_safe_redirect( esc_url( wp_login_url() . '?login_redir=' . $_SERVER['REQUEST_URI'] ) ) ) {
exit;
};
}
}
add_action( 'template_redirect', 'forced_login', 10, 1 );
Функция redirected_login
/**
* redirected_login Filter Hook: Обновляет параметр 'redirect_to' с использованием пользовательского
* параметра запроса 'login_redir'.
*
* Эта функция является необязательной. Используйте ее, если хотите перенаправить пользователей на изначально
* запрошенную страницу.
*
* @param string $redirect_to URL для перенаправления по умолчанию.
* @param string $request URL, с которого пришел пользователь.
* @param WP_User|WP_Error $user Объект WP_User, если вход выполнен успешно, или
* объект WP_Error, если вход не выполнен.
*
* @return string Обновленный параметр $redirect_to.
*
*/
function redirected_login( $redirect_to, $request, $user ){
$query = parse_url( $_SERVER['HTTP_REFERER'], PHP_URL_QUERY );
parse_str( $query, $params );
$path = $params['login_redir'];
if ( empty( $path ) ) {
$redir = $redirect_to;
} else {
$redir = get_home_url() . $path;
}
return $redir;
}
add_filter( 'login_redirect', 'redirected_login', 10, 3 );
Пользовательский плагин
Если вы никогда ранее не создавали свой собственный плагин, я бы предложил ознакомиться с Руководством по плагинам WordPress.
Чтобы начать, создайте базовый плагин, создав PHP файл с заголовком, который выглядит так:
<?php
/**
* Название плагина: NAME_OF_YOUR_PLUGIN
*/
Добавьте приведенный выше код в этот PHP файл и сохраните файл в вашей установке WordPress в следующем месте (предполагается, что используется Windows с диском ‘C’):
C:/inetpub/wwwroot/<wordpress_installation_root>/wp-content/plugins/NAME_OF_YOUR_PLUGIN/NAME_OF_YOUR_PLUGIN.php
Создание базового плагина объясняется в разделе Основы плагинов: Начало работы на странице Основы плагинов WordPress. Установив этот файл, вы можете войти в WordPress как администратор, перейти на Панель управления и использовать пункт меню Плагины для активации плагина.
.
Ответ или решение
Чтобы заблокировать весь фронтенд сайта WordPress входом по логину и паролю, вы можете воспользоваться несколькими методами, которые помогут достичь желаемой функциональности. Рассмотрим детально несколько решений, которые обеспечат безопасность вашего контента, ограничив доступ только для авторизованных пользователей.
1. Установка плагина
Одним из самых простых способов выполнения этой задачи является использование специального плагина. Рассмотрим два популярных плагина для защиты вашего WordPress сайта.
Absolute Privacy
Этот плагин позволяет превратить ваш сайт WordPress в полностью приватный ресурс, где вы контролируете доступ для пользователей. Идеально подходит для семейных блогов, закрытых сообществ и личных сайтов. С помощью Absolute Privacy вы можете:
- Заблокировать весь сайт или создать зону только для членов сообщества.
- Модерировать новые регистрации.
- Требовать от пользователей ввод имени и фамилии при регистрации.
- Управлять паролями пользователей.
Для установки плагина:
- Перейдите в админ-панель WordPress.
- В меню слева выберите «Плагины» → «Добавить новый».
- В строке поиска введите «Absolute Privacy».
- Найдите плагин и нажмите «Установить», затем «Активировать».
Password Protected
Этот плагин предлагает простой способ защитить сайт одной парой логина и пароля. Однако учтите, что он защищает только генерируемый WordPress контент и не скрывает изображения или загруженные файлы, доступ к которым можно получить напрямую по URL.
Процедура установки аналогична описанной выше:
- Введите «Password Protected» в строке поиска плагинов.
- Установите и активируйте плагин.
2. Создание своего плагина с помощью кода
Если вы хотите больше гибкости, вы можете создать собственный плагин, используя PHP-код для перенаправления неавторизованных пользователей на страницу входа и возвращения на запрашиваемую страницу после успешной авторизации. Вот как это можно сделать:
Шаги для настройки:
- Создание PHP-файла:
- Создайте файл с названием
name_of_your_plugin.php
. - Добавьте в файл следующий код:
- Создайте файл с названием
<?php
/**
* Plugin Name: NAME_OF_YOUR_PLUGIN
*/
function forced_login() {
if ( ! is_user_logged_in() ) {
nocache_headers();
if ( wp_safe_redirect( esc_url( wp_login_url() . '?login_redir=' . $_SERVER['REQUEST_URI'] ) ) ) {
exit;
};
}
}
add_action( 'template_redirect', 'forced_login', 10, 1 );
function redirected_login( $redirect_to, $request, $user ){
$query = parse_url( $_SERVER['HTTP_REFERER'], PHP_URL_QUERY );
parse_str( $query, $params );
$path = $params['login_redir'];
if ( empty( $path ) ) {
$redir = $redirect_to;
} else {
$redir = get_home_url() . $path;
}
return $redir;
}
add_filter( 'login_redirect', 'redirected_login', 10, 3 );
?>
- Установка файла:
- Разместите файл по следующему пути в вашей WordPress установке:
wp-content/plugins/NAME_OF_YOUR_PLUGIN/NAME_OF_YOUR_PLUGIN.php
. - Авторизуйтесь в WordPress как администратор, перейдите в панель управления и активируйте новый плагин через меню «Плагины».
- Разместите файл по следующему пути в вашей WordPress установке:
Этот подход позволяет вам самостоятельно управлять процессом перенаправления пользователей и гарантировать, что они смогут вернуться на запрашиваемую страницу после успешной авторизации, улучшая пользовательский опыт на вашем сайте.
Заключение
Решение, которое вы выберете, зависит от ваших конкретных требований и уровня технической подготовки. Плагины предлагают простоту установки, в то время как собственное решение с использованием кода дает большую гибкость и контроль над функциональностью вашего сайта. В любом случае, защита контента — важный аспект безопасности и конфиденциальности вашего сайта.