Как перенаправить пользователя, если он не вошел в систему WordPress » Перенаправление страницы

Опубликовано: 2022-01-02

Как перенаправить, если вы не вошли в WordPress В последнем посте я продемонстрировал, как проверить, авторизовался ли пользователь в WordPress. Одна из распространенных причин, по которой вы можете захотеть проверить, вошел ли пользователь WordPress в систему, — это отображение разных страниц в зависимости от статуса входа пользователя WordPress. Если вы хотите перенаправить пользователей, не вошедших в WordPress, вы можете добиться этого, добавив фрагмент кода в свой файл functions.php, как вы увидите в этом кратком руководстве.

Зачем перенаправлять пользователей в WordPress?

Перенаправление пользователей является важным требованием для большинства сайтов WordPress. В разное время вы можете захотеть перенаправить пользователей с одной страницы на другую. Например, вы можете перенаправить пользователей WooCommerce после оформления заказа, или вы можете перенаправить пользователя после регистрации или входа на веб-сайт.

Перенаправление, если вы не вошли в систему WordPress, является одним из наиболее распространенных перенаправлений. Хотя существуют плагины, которые могут помочь управлять перенаправлением в WordPress, но добавление небольшого фрагмента, который решает эту проблему, является лучшим решением, чем полагаться на сторонний плагин.

В этом уроке я покажу, как добавить фрагмент в вашу тему или плагин, который создает перенаправление для пользователей, которые не вошли на страницу по вашему выбору.

Шаги для перенаправления, если вы не вошли в WordPress

Чтобы реализовать перенаправление, если вы не вошли в систему WordPress, вы должны выполнить следующие шаги:

  1. Войдите на свой сайт WordPress и перейдите к редактору тем в меню внешнего вида в главном меню панели инструментов.
  2. Откройте файл functions.php активной темы WordPress. Вы также можете использовать CPanel или FTP для доступа к файлу functions.php активной темы. Он находится на этом пути – wp-root-installation/wp-content/themes/active-theme/functions.php
  3. Создайте хук действия, который цепляется за хук инициализации администратораadmin_init , например, add_action('init', 'redirect_if_not_logged_in') . Этот хук имеет функцию обратного вызова, которая будет иметь логику для проверки того, вошел ли пользователь в WordPress, и если он не вошел в систему, он перенаправляется на нужную страницу.
  4. Создайте функцию обратного вызова, как мы упоминали выше, и добавьте соответствующий код.
  5. Сохраните изменения и перейдите во внешний интерфейс, чтобы проверить, перенаправляются ли пользователи, которые не вошли в систему, на страницу, которую вы добавили в коде.

Давайте продемонстрируем, как вы можете добавить перенаправление, если пользователь не вошел в систему 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

Последние мысли

Если вы хотите создать перенаправление, если пользователь не вошел в систему WordPress, вам нужно сначала проверить, вошел ли пользователь в систему, используя код, которым я поделился в этом сообщении, а затем использовать функцию wp_redirect() , чтобы добавить новое место назначения, где пользователи должны быть перенаправлены, если они обращаются к определенной странице или сообщению.

Этот код можно добавить в файл functions.php вашей темы или использовать его как часть собственного плагина WordPress. Важно всегда помнить, что когда вы используете функцию wp_redirect , вы НИКОГДА не должны забывать добавлять выход, так как эта функция не завершается автоматически.

Как разработчик плагинов WordPress, вы также можете рассмотреть другой плагин перенаправления WordPress wp_safe_redirect(), который обеспечивает лучший способ перенаправления, поскольку он проверяет, разрешен ли хост параметра $location.

Похожие статьи