Как перенаправить пользователя, если он не вошел в систему WordPress » Перенаправление страницы
Опубликовано: 2022-01-02В последнем посте я продемонстрировал, как проверить, авторизовался ли пользователь в WordPress. Одна из распространенных причин, по которой вы можете захотеть проверить, вошел ли пользователь WordPress в систему, — это отображение разных страниц в зависимости от статуса входа пользователя WordPress. Если вы хотите перенаправить пользователей, не вошедших в WordPress, вы можете добиться этого, добавив фрагмент кода в свой файл functions.php, как вы увидите в этом кратком руководстве.
Зачем перенаправлять пользователей в WordPress?
Перенаправление пользователей является важным требованием для большинства сайтов WordPress. В разное время вы можете захотеть перенаправить пользователей с одной страницы на другую. Например, вы можете перенаправить пользователей WooCommerce после оформления заказа, или вы можете перенаправить пользователя после регистрации или входа на веб-сайт.
Перенаправление, если вы не вошли в систему WordPress, является одним из наиболее распространенных перенаправлений. Хотя существуют плагины, которые могут помочь управлять перенаправлением в WordPress, но добавление небольшого фрагмента, который решает эту проблему, является лучшим решением, чем полагаться на сторонний плагин.
В этом уроке я покажу, как добавить фрагмент в вашу тему или плагин, который создает перенаправление для пользователей, которые не вошли на страницу по вашему выбору.
Шаги для перенаправления, если вы не вошли в WordPress
Чтобы реализовать перенаправление, если вы не вошли в систему WordPress, вы должны выполнить следующие шаги:
- Войдите на свой сайт WordPress и перейдите к редактору тем в меню внешнего вида в главном меню панели инструментов.
- Откройте файл functions.php активной темы WordPress. Вы также можете использовать CPanel или FTP для доступа к файлу functions.php активной темы. Он находится на этом пути –
wp-root-installation/wp-content/themes/active-theme/functions.php - Создайте хук действия, который цепляется за хук инициализации администратора —
admin_init
, например,add_action('init', 'redirect_if_not_logged_in')
. Этот хук имеет функцию обратного вызова, которая будет иметь логику для проверки того, вошел ли пользователь в WordPress, и если он не вошел в систему, он перенаправляется на нужную страницу. - Создайте функцию обратного вызова, как мы упоминали выше, и добавьте соответствующий код.
- Сохраните изменения и перейдите во внешний интерфейс, чтобы проверить, перенаправляются ли пользователи, которые не вошли в систему, на страницу, которую вы добавили в коде.
Давайте продемонстрируем, как вы можете добавить перенаправление, если пользователь не вошел в систему WordPress. Я буду использовать тему WordPress по умолчанию при установке на локальном хосте, но это может работать для всех других сайтов, независимо от темы и среды хостинга.
Код для добавления перенаправления также может принимать другое условие, например, в большинстве случаев, когда вы хотите ограничить контент от незарегистрированных пользователей, вы должны проверить два условия:
- Если пользователь вошел в систему
- Если пользователь находится на странице, где у вас есть запрещенный контент
Когда эти условия соблюдены, вы должны использовать функцию wp_redirect() для перенаправления пользователя на выбранную вами страницу.
Функция WP: wp_redirect()
Это функция перенаправления WordPress, которую можно использовать в темах и плагинах для перенаправления пользователей. Общее выражение этой функции выглядит следующим образом:
wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )
Как видите, у функции есть три параметра:
Параметр | Описание |
$location | Это URL-адрес, по которому вы хотите перенаправить пользователя. Когда вы используете эту функцию, когда пользователь не вошел в систему, вам необходимо указать URL-адрес страницы, на которую мы перенаправим пользователя, как вы увидите в примере кода. |
$status | Это необязательный параметр, и вы можете не часто его использовать, но это код состояния ответа HTTP, который следует использовать. По умолчанию «302», и вы можете использовать 301 для постоянного перенаправления. Будьте осторожны при использовании этого параметра с опцией перенаправления 301. |
$x_redirect_by | Это просто приложение, применяющее перенаправление, и оно редко меняет значение по умолчанию, которым является WordPress. |
Действие перенаправления шаблона, если пользователь не вошел в систему
Чтобы перенаправить пользователя, который не вошел в систему WordPress, теперь вы можете использовать функцию wp_redirect с условной проверкой, если пользователь вошел в систему, следующим образом:
add_action('template_redirect', 'redirect_if_user_not_logged_in'); функция redirect_if_user_not_logged_in() { if ( is_page('slug || ID') && ! is_user_logged_in() ) { //примером может быть is_page(23) где 23 это ID страницы wp_redirect('http://ваша-переадресация-страница-здесь'); exit;// никогда не забывайте об этом выходе, так как для wp_redirect() очень важно иметь выход / die } }
Замените слаг условной проверки на соответствующую страницу, а также замените URL-адрес перенаправления в приведенном выше коде и добавьте его в functions.php, чтобы перенаправить пользователей, которые не вошли в систему, на этот URL-адрес страницы.
Действие Admin Init Redirect, если пользователь не вошел в систему
Кроме того, вы можете подключиться к admin_init
вместо template_redirect
, чтобы перенаправить пользователя, если он не вошел в систему WordPress.
Код должен быть таким же, за исключением добавления хука действия. Код должен быть следующим:
add_action('admin_init', 'redirect_if_user_not_logged_in'); функция redirect_if_user_not_logged_in() { если ( !is_user_logged_in() && is_page('slug')) { wp_redirect('http://ваша-переадресация-страница-здесь'); выход; } }
Когда мы добавим этот код в тему WordPress по умолчанию functions.php и добавим ярлык для страницы, на которую мы хотим создать перенаправление и URL-адрес для места назначения, он отлично работает, как вы можете видеть:
Последние мысли
Если вы хотите создать перенаправление, если пользователь не вошел в систему WordPress, вам нужно сначала проверить, вошел ли пользователь в систему, используя код, которым я поделился в этом сообщении, а затем использовать функцию wp_redirect() , чтобы добавить новое место назначения, где пользователи должны быть перенаправлены, если они обращаются к определенной странице или сообщению.
Этот код можно добавить в файл functions.php вашей темы или использовать его как часть собственного плагина WordPress. Важно всегда помнить, что когда вы используете функцию wp_redirect , вы НИКОГДА не должны забывать добавлять выход, так как эта функция не завершается автоматически.
Как разработчик плагинов WordPress, вы также можете рассмотреть другой плагин перенаправления WordPress wp_safe_redirect(), который обеспечивает лучший способ перенаправления, поскольку он проверяет, разрешен ли хост параметра $location.
Похожие статьи
- Как удалить или отключить отзывы в WooCommerce
- Как проверить, активен ли плагин в WordPress [3 СПОСОБА]
- Как создать пользовательскую область виджетов в WordPress шаг за шагом
- Как скрыть продукт в WooCommerce или скрыть продукты по категориям или ролям
- Как изменить ссылку возврата в магазин в Woocommerce
- Как создать собственные роли пользователей WordPress
- Как получить текущую роль пользователя в WordPress и отображать роли
- Как исправить ошибку неперехваченного типа: wp.template не является функцией
- Полное руководство по использованию пользовательских хуков WordPress do_action и apply_filters с примерами
- Как перенаправить пользователей после успешного входа в WordPress без использования плагина
- Выход из WooCommerce без подтверждения: как удалить «Вы уверены, что хотите выйти?»
- Как перенаправить в корзину после входа в WooCommerce
- PHP-фрагмент WooCommerce Logout для создания кнопки выхода
- Как создать уведомление администратора WooCommerce для плагина — WooCommerce Development
- Как удалить сообщение «Добавлено в корзину» WooCommerce
- Как добавить текст после цены в WooCommerce »Добавить суффикс цены
- Как изменить текст перехода к оформлению заказа в WooCommerce