Как сделать обязательную авторизацию на сайте WordPress?
Доброго времени суток уважаемый читать вопроса. Сейчас планирую сделать сайт в ТЗ имеется задача сделать обязательной авторизацию на сайте чтобы потом пользователь мог просматривать контент видел варианты с помощью плагинов Мембершип но чуток не подходит. Могли бы вы подсказать вариант как можно сделать чтобы при переходе по ссылкам на сайте не авторизованного пользователя перекидывало на страницу wp-login
Дополнительно:
С помощью GPT нашёл вариант оставлю тут возможно кому-то пригодится в будущем
Внести изменения в functions.php своей темы
function custom_force_login() { if (!is_user_logged_in()) { auth_redirect(); } } add_action('template_redirect', 'custom_force_login'); |
function custom_force_login() { if (!is_user_logged_in()) { auth_redirect(); } } add_action('template_redirect', 'custom_force_login');
Этот код перенаправит неавторизованных пользователей на страницу входа WordPress. Важно обновлять свой код и тему после обновления WordPress, чтобы избежать возможных конфликтов.
Если ты не хочешь использовать код, существуют также плагины, такие как "Peter's Login Redirect", которые предоставляют удобные интерфейсы для настройки перенаправлений после входа в систему.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Сделать обязательную авторизацию на WordPress можно без тяжёлого membership-плагина, если задача простая: неавторизованные пользователи не видят контент и отправляются на страницу входа. Для этого достаточно hook
template_redirect.Пример:
add_action('template_redirect', function () { if (is_user_logged_in()) { return; } if (is_page(['login', 'register'])) { return; } if (is_admin() || wp_doing_ajax()) { return; } auth_redirect(); });
auth_redirect()отправит пользователя на стандартную страницу входа WordPress и после авторизации вернёт назад.Если нужно разрешить гостям только несколько публичных страниц, добавьте whitelist:
$public_pages = ['login', 'register', 'privacy-policy']; if (is_page($public_pages)) { return; }
Если сайт должен быть полностью закрытым, не забудьте закрыть REST API и feeds, если через них не должен уходить контент. Но делайте это аккуратно: REST нужен редактору, формам и многим плагинам.
Для защиты файлов из медиабиблиотеки одной авторизации страниц недостаточно. Если пользователь знает прямую ссылку на PDF/картинку в uploads, файл может открыться напрямую. Для закрытых документов нужна отдельная схема: хранить файлы вне public uploads или отдавать их через PHP после проверки прав.
Если нужны роли, тарифы, оплаты, личные кабинеты, уровни доступа и подписки, тогда membership-плагин всё же оправдан: Paid Memberships Pro, MemberPress, Restrict Content Pro и аналоги. Самописная авторизация хороша только для простого закрытого сайта.
Также добавьте noindex для закрытых страниц и проверьте, что кэш не отдаёт авторизованный контент гостям. Страницы, зависящие от авторизации, нельзя кэшировать одинаково для всех пользователей.
Итог: для обязательного входа достаточно
template_redirect+ whitelist публичных страниц. Для сложных прав доступа и закрытых файлов нужен полноценный механизм membership/permissions.