Как сделать обязательную авторизацию на сайте WordPress?

Ссылка скопирована
1 ответ

Доброго времени суток уважаемый читать вопроса. Сейчас планирую сделать сайт в ТЗ имеется задача сделать обязательной авторизацию на сайте чтобы потом пользователь мог просматривать контент видел варианты с помощью плагинов Мембершип но чуток не подходит. Могли бы вы подсказать вариант как можно сделать чтобы при переходе по ссылкам на сайте не авторизованного пользователя перекидывало на страницу 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", которые предоставляют удобные интерфейсы для настройки перенаправлений после входа в систему.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Сделать обязательную авторизацию на 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();
});

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;
}

$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.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно