Jak przekierować użytkownika, jeśli nie jest zalogowany w WordPressie » Przekierowanie strony

Opublikowany: 2022-01-02

Jak przekierować, jeśli nie jesteś zalogowany WordPress W ostatnim poście pokazałem, jak sprawdzić, czy użytkownik jest zalogowany w WordPressie. Jednym z typowych powodów, dla których możesz chcieć sprawdzić, czy użytkownik WordPress jest zalogowany, jest pokazywanie różnych stron na podstawie statusu zalogowanego użytkownika WordPress. Jeśli chcesz przekierować użytkowników, którzy nie są zalogowani do WordPressa, możesz to osiągnąć, dodając fragment kodu w pliku functions.php, jak zobaczysz w tym krótkim samouczku.

Po co przekierowywać użytkowników w WordPressie?

Przekierowywanie użytkowników jest ważnym wymogiem dla większości witryn WordPress. Czasami możesz chcieć przekierować użytkowników z jednej strony na drugą. Na przykład możesz przekierować użytkowników WooCommerce po dokonaniu płatności lub możesz przekierować użytkownika po rejestracji lub przekierowaniu logowania do witryny.

Przekierowanie, jeśli nie jesteś zalogowany, WordPress jest jednym z najczęstszych przekierowań. Chociaż istnieją wtyczki, które mogą pomóc w zarządzaniu przekierowaniami w WordPressie, dodanie małego fragmentu, który rozwiązuje ten problem, jest lepszym rozwiązaniem niż poleganie na wtyczce innej firmy.

W tym samouczku zademonstruję, jak dodać do motywu lub wtyczki fragment, który tworzy przekierowanie dla użytkowników, którzy nie są zalogowani na wybranej przez Ciebie stronie.

Kroki do przekierowania, jeśli nie jesteś zalogowany w WordPress

Aby zaimplementować przekierowanie, jeśli nie jesteś zalogowany w WordPressie, wykonaj następujące czynności:

  1. Zaloguj się do swojej witryny WordPress i przejdź do edytora motywów w menu wyglądu w głównym menu pulpitu nawigacyjnego.
  2. Otwórz plik functions.php aktywnego motywu WordPress. Możesz także użyć CPanel lub FTP, aby uzyskać dostęp do aktywnego pliku functions.php. Znajduje się na tej ścieżce – wp-root-installation/wp-content/themes/active-theme/functions.php
  3. Utwórz hak akcji, który przechwytuje hak inicjalizacji administratoraadmin_init , na przykład add_action('init', 'redirect_if_not_logged_in') . Ten hak ma funkcję wywołania zwrotnego, która będzie miała logikę sprawdzania, czy użytkownik jest zalogowany w WordPressie i jeśli nie jest zalogowany, zostanie przekierowany na wybraną przez nas stronę.
  4. Utwórz funkcję zwrotną, jak wspomnieliśmy powyżej, i odpowiednio dodaj kod.
  5. Zapisz zmiany i przejdź do frontendu, aby sprawdzić, czy niezalogowani użytkownicy są przekierowywani na stronę dodaną w kodzie.

Pozwól nam zademonstrować, jak dodać przekierowanie, jeśli użytkownik nie jest zalogowany w WordPressie. Będę używał domyślnego motywu WordPress w instalacji localhost, ale może to działać na wszystkich innych witrynach, niezależnie od motywu i środowiska hostingu.

Kod dodawania przekierowania może również przyjąć inny warunek, ponieważ w większości przypadków, gdy chcesz ograniczyć zawartość od niezalogowanych użytkowników, sprawdź dwa warunki:

  • Jeśli użytkownik jest zalogowany
  • Jeśli użytkownik znajduje się na stronie, na której masz zastrzeżoną treść

Gdy te warunki są spełnione, należy użyć funkcji wp_redirect(), aby przekierować użytkownika do wybranej strony.

Funkcja WP: wp_redirect()

Jest to funkcja przekierowywania WordPress, której można używać w motywach i wtyczkach do przekierowywania użytkowników. Ogólny wyraz tej funkcji jest następujący:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Jak widać funkcja ma trzy parametry, które są następujące:

Parametr Opis
$location To jest adres URL, pod który chcesz przekierować użytkownika. W przypadku korzystania z tej funkcji, gdy użytkownik nie jest zalogowany, należy podać adres URL strony, do której przekierujemy użytkownika, jak widać w przykładowym kodzie
$status Jest to parametr opcjonalny i możesz nie widzieć go często używanego, ale jest to kod statusu odpowiedzi HTTP do użycia. Domyślnie „302” i możesz użyć 301 do stałego przekierowania. Zachowaj ostrożność podczas używania tego parametru z opcją przekierowania 301.
$x_redirect_by Jest to po prostu aplikacja stosująca przekierowanie i rzadko zmienia ona domyślną wartość, którą jest WordPress

Akcja przekierowania szablonu, jeśli użytkownik nie jest zalogowany

Aby przekierować użytkownika, który nie jest zalogowany w WordPressie, możesz teraz użyć funkcji wp_redirect z warunkowym sprawdzeniem, czy użytkownik jest zalogowany w następujący sposób:

 add_action( 'template_redirect', 'redirect_if_user_not_logged_in' );

function redirect_if_user_not_logged_in() {

	if ( is_page('slug || ID') && ! is_user_logged_in() ) { //przykład może być is_page(23) gdzie 23 to identyfikator strony

		wp_redirect( 'http://twoja-strona-przekierowania-tutaj'); 
 
     exit;// nigdy nie zapomnij tego wyjścia, ponieważ bardzo ważne jest, aby wp_redirect() miał wyjście / die
   
   }
   
}

Zastąp wiadomość sprawdzania warunkowego odpowiednią stroną, a także zastąp adres URL przekierowania w powyższym kodzie i dodaj go do functions.php, aby przekierować użytkowników, którzy nie są zalogowani na ten adres URL strony.

Przekierowanie administratora init, jeśli użytkownik nie jest zalogowany

Alternatywnie możesz podłączyć admin_init zamiast template_redirect aby przekierować użytkownika, jeśli nie jest zalogowany do WordPressa.

Kod powinien być taki sam z wyjątkiem miejsca dodania haka akcji. Kod powinien wyglądać następująco:

 add_action( 'admin_init', 'redirect_if_user_not_logged_in' );

function redirect_if_user_not_logged_in() {

if ( !is_user_logged_in() && is_page('slug')) {

      wp_redirect( 'http://twoja-strona-przekierowania-tutaj'); 
   
   Wyjście;
   }
}

Kiedy dodamy ten kod do domyślnego motywu WordPress functions.php i dodamy ślimak dla strony, na której chcemy utworzyć przekierowanie i adres URL do miejsca docelowego, działa idealnie, jak widać:

Jak przekierować, jeśli nie jesteś zalogowany WordPress

Końcowe przemyślenia

Jeśli chcesz utworzyć przekierowanie, jeśli użytkownik nie jest zalogowany w WordPressie, musisz najpierw sprawdzić, czy użytkownik jest zalogowany przy użyciu kodu, który udostępniłem w tym poście, a następnie użyć funkcji wp_redirect() , aby dodać nowe miejsce docelowe, w którym użytkownicy powinni zostać przekierowanym, jeśli uzyska dostęp do określonej strony lub posta.

Ten kod można dodać do pliku functions.php motywu lub użyć go jako części niestandardowej wtyczki WordPress. Ważne jest, aby zawsze pamiętać, że podczas korzystania z funkcji wp_redirect NIGDY nie należy zapominać o dodaniu wyjścia, ponieważ ta funkcja nie kończy się automatycznie.

Jako programista wtyczki WordPress, możesz również rozważyć inną wtyczkę przekierowania WordPress wp_safe_redirect(), która zapewnia lepszy sposób przekierowania, ponieważ sprawdza, czy host parametru $location jest dozwolony.

Podobne artykuły