Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem
WebHelp.pl Warsztat Porady WordPress: przekierowanie użytkownika po zalogowaniu lub wylogowaniu

Warsztat / Porady

WordPress: przekierowanie użytkownika po zalogowaniu lub wylogowaniu

Bartosz Romanowski 12 stycznia 2012 komentarze ()

Tagi:WordPress

Domyślnie WordPress po zalogowaniu przekierowuje użytkowników do panelu administracyjnego, a po wylogowaniu do strony logowania. Gdy w naszym serwisie wykorzystujemy funkcjonalność kont użytkowników, zachowanie takie jest w większości przypadków niepożądane. Łatwo jednak je zmienić.

Pierwszą metodą jest odpowiednie zmodyfikowanie linku prowadzącego do formularza logowania oraz służącego do wylogowania. Wykorzystuje się do tego celu funkcje wp_login_url() i wp_logout_url().

Zacznijmy od linku do formularza logowania:

Kod: Zaznacz cały
// po zalogowaniu użytkownik zostanie przekierowany do bieżącej strony
<a href="<?php echo wp_login_url(get_permalink()); ?>" title="Zaloguj się">Zaloguj się</a>

// użytkownik zostanie przekierowany do strony głównej
<a href="<?php echo wp_login_url(home_url()); ?>" title="Zaloguj się">Zaloguj się</a>

// użytkownik zostanie przekierowany na stronę http://moja-domena.pl/po-zalogowaniu/
<a href="<?php echo wp_login_url('http://moja-domena.pl/po-zalogowaniu/'); ?>" title="Zaloguj się">Zaloguj się</a>

W analogiczny sposób możemy zmodyfikować link służący do wylogowania z serwisu:

Kod: Zaznacz cały
// po wylogowaniu użytkownik zostanie przekierowany do bieżącej strony
<a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Wyloguj się">Wyloguj się</a>

// użytkownik zostanie przekierowany do strony głównej
<a href="<?php echo wp_logout_url(home_url()); ?>" title="Wyloguj się">Wyloguj się</a>

// użytkownik zostanie przekierowany na stronę http://moja-domena.pl/po-wylogowaniu/
<a href="<?php echo wp_logout_url('http://moja-domena.pl/po-wylogowaniu/'); ?>" title="Wyloguj się">Wyloguj się</a>

Jeśli formularz do logowania mamy umieszczony w jakimś miejscu na stronie, możemy w łatwy sposób zmodyfikować adres, na który zostanie przekierowany użytkownik po zalogowaniu. Do wyświetlenia formularza logowania służy funkcja wp_login_form(), do której musimy przekazać parametr redirect. Trzeba pamiętać, że w tym przypadku domyślą stroną, na jaką jest przekierowywany użytkownik, jest strona bieżąca.

Kod: Zaznacz cały
// po zalogowaniu użytkownik zostanie przekierowany do strony głównej
wp_login_form(array('redirect' => home_url()));

// użytkownik zostanie przekierowany na stronę http://moja-domena.pl/po-zalogowaniu/
wp_login_form(array('redirect' => 'http://moja-domena.pl/po-zalogowaniu/'));

Drugim, znacznie wygodniejszym sposobem na przekierowywanie użytkowników po zalogowaniu i wylogowaniu, jest skorzystanie z dwóch udostępnianych przez WordPressa uchwytów (hooks) - wp_login i wp_logout. To rozwiązanie nie wymaga od nas żadnych zmian w szablonie, a na dodatek będzie działać dla wszystkich możliwych metod logowania i wylogowania, również wykorzystywanych w innych wtyczkach.

Kod: Zaznacz cały
// filtr dla logowania
add_filter('wp_login', 'login_redirect');

function login_redirect() {
   wp_redirect('http://moja-domena.pl/po-zalogowaniu/');
   exit();
}

// filtr dla wylogowania
add_filter('wp_logout', 'logout_redirect');

function logout_redirect() {
   wp_redirect('http://moja-domena.pl/po-wylogowaniu/');
   exit();
}

Masz pytania lub wątpliwości? Odwiedź nasze forum dyskusyjne.

Bartosz Romanowski

Programista, gadżeciarz, krytyczny miłośnik produktów Apple, fan ciężkich brzmień i niepoprawny pesymista.


Komentarze


HTML CSS JavaScript PHP bazy danych MySQL Flash grafika framework hosting domeny pozycjonowanie wordpress Facebook