Jak przekierować użytkownika, jeśli nie jest zalogowany w WordPressie » Przekierowanie strony
Opublikowany: 2022-01-02W 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:
- Zaloguj się do swojej witryny WordPress i przejdź do edytora motywów w menu wyglądu w głównym menu pulpitu nawigacyjnego.
- 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 - Utwórz hak akcji, który przechwytuje hak inicjalizacji administratora –
admin_init
, na przykładadd_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ę. - Utwórz funkcję zwrotną, jak wspomnieliśmy powyżej, i odpowiednio dodaj kod.
- 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ć:
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
- Jak usunąć lub wyłączyć recenzje w WooCommerce?
- Jak sprawdzić, czy wtyczka jest aktywna w WordPress [ 3 SPOSOBY ]
- Jak utworzyć niestandardowy obszar widżetów w WordPressie krok po kroku
- Jak ukryć produkt w WooCommerce lub ukryć produkty według kategorii lub ról
- Jak zmienić link powrotu do sklepu w Woocommerce?
- Jak tworzyć niestandardowe role użytkownika WordPress
- Jak uzyskać aktualną rolę użytkownika w WordPressie i rolach wyświetlania?
- Jak naprawić błąd typu Uncaught Type: wp.template nie jest funkcją
- Kompletny przewodnik po korzystaniu z niestandardowych hooków WordPressa do_action i apply_filters z przykładami
- Jak przekierować użytkowników po pomyślnym zalogowaniu się do WordPressa bez użycia wtyczki?
- Wylogowanie WooCommerce bez potwierdzenia: Jak usunąć „Czy na pewno chcesz się wylogować?”
- Jak przekierować do koszyka po zalogowaniu w WooCommerce
- WooCommerce Wyloguj fragment PHP, aby utworzyć przycisk wylogowania
- Jak utworzyć powiadomienie administratora WooCommerce dla wtyczki – Rozwój WooCommerce
- Jak usunąć został dodany do koszyka Wiadomość WooCommerce
- Jak dodać tekst po cenie w WooCommerce » Dodaj sufiks ceny
- Jak zmienić tekst przejścia do kasy w WooCommerce?