WordPress: Panel Logowania w Sidebar
W WordPress zawsze mnie denerwowała strona logowania, nie tylko to, że wygląda inaczej niż zastosowana skórka. Nie podobała mi się konieczność wejścia w kolejną podstronę tylko po to aby się zalogować. I jeszcze jedno … po zalogowaniu następuje przekierowanie do profilu/admina, a ja chcę na stronę na której się logowałem! Praktyczny przykład: wchodzisz na stronę z postem, chcesz zostawić komentarz jako Ty, wpisujesz login oraz hasło, klikasz loguj i… jesteś zalogowany na stronie z postem w którym chcesz zamieścić komentarz. A teraz wyobraź sobie jak to się robi w „zwykłym” WP. Widać różnicę? No to zaczynamy.
Otwieramy w katalogu ze skórkami plik sidebar.php i wstawiamy w niego prosty kod wyświetlający formularz logowania, link do rejestracji i do przypomnienia hasła w przypadku niezalogowanych, natomiast w przypadku zalogowanych użytkowników link do profilu i wylogujący:
<li><h2>Meta</h2>
<?php
if ( is_user_logged_in() ) {
global $userdata;
?>
<ul>
<?php if ( $userdata->user_level == 10 ) { // Dla admina, zmien wg wlasnego uznania ?>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-admin/index.php">Nowości</a></li>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-admin/post.php">Dodaj wpis</a></li>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-admin/moderation.php">Poczekalnia</a></li>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-admin/plugins.php">Wtyczki</a></li>
<?php } ?>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-admin/profile.php">Profil</a></li>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-login.php?action=logout">Wyloguj się!</a></li>
</ul>
<?php } else { ?>
<form name="loginform" id="loginform" action="<?php echo get_settings('siteurl'); ?>/wp-login.php" method="post">
<p><label><input type="text" name="log" id="log" value="" size="15" tabindex="5" /> Login</label></p>
<p><label><input type="password" name="pwd" id="pwd" value="" size="15" tabindex="6" /> Hasło</label></p>
<p><label><input type="submit" name="submit" id="submit_loguj" value="Loguj »" tabindex="8" /></label> <label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="7" /> Pamiętaj mnie!</label></p>
<input type="hidden" name="redirect_to" value="<?php echo rawurlencode( $_SERVER['REQUEST_URI'] ); ?>" />
</form>
<ul>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-register.php">Rejestracja</a></li>
<li><a href="<?php echo get_settings('siteurl'); ?>/wp-login.php?action=lostpassword">Zapomniane hasło</a></li>
</ul>
<?php } ?>
</li>
Oczywiście dostępne linki (mowa głównie o tych dostępnych dla administratora) można zmienić wedle własnego uznania.
Następnie bierzemy się za plik wp-login.php.
Dla akcji login ( case ‘login’ ) zmieniamy domyślne przekierowanie (wp-admin) na główną stronę naszego bloga oraz odkodujemy przychodzący link przekierowania. Wymieniamy kod:
if ( !isset( $_REQUEST['redirect_to'] ) )
$redirect_to = 'wp-admin/';
else
$redirect_to = $_REQUEST['redirect_to'];
na:
if ( !isset( $_REQUEST['redirect_to'] ) || empty( $_REQUEST['redirect_to'] ) )
$redirect_to = get_settings('siteurl').'/';
else
$redirect_to = rawurldecode( $_REQUEST['redirect_to'] );
Aby również użytkownicy mający możliwość (uprawnienie) edycji postów byli przekierowani na stronę, z której się logowali, musimy zakomentować (lub usunąć) następujące linie:
/* if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' ) )
$redirect_to = get_option('siteurl') . '/wp-admin/profile.php'; */
I to w zasadzie tyle, choć jeszcze, aby wylogowywało nas na główną stronę (a nie na „starą” stronę logowania), dla akcji logout (case ‘logout’ w pliku wp-login.php) zmieniamy linijkę:
$redirect_to = 'wp-login.php?loggedout=true';
na
$redirect_to = get_settings('siteurl').'/';
i tyle (-:
Update:
Duży update posta do obecnej postaci jaka się u mnie prezentuje. Opisy na podstawie WordPress 2.1
Lipiec 7th, 2006 at 10:30
mnie tez to denerwowalo :D
Styczeń 20th, 2008 at 23:21
Witaj mógłbyś zaktualizować to do 2.3
Marzec 21st, 2008 at 16:49
Szczerze, nie widzę takiej potrzeby, praktycznie nikt z tego nie korzysta, a po za tym w 2.3 idea jest taka sama, a drobiazgi niekompatybilne można samemu wyłapać i zmienić.
Kwiecień 12th, 2008 at 21:07
Zastanawiam się dlaczego nie wyświetla się to w ogóle w bloku, tylko do tego dany blok ginie. Coś nie tak tutaj jest…
Kwiecień 12th, 2008 at 21:15
Tak jak myślałem, mała poprawka:
Kwiecień 12th, 2008 at 21:16
Edit: coś nie bardzo mi wyszło umieszczenie kodu
Kwiecień 13th, 2008 at 10:09
Poprawiłem (chodziło o jeden zabłąkany slash ?), dzięki.
Październik 30th, 2008 at 01:49
ja to uzywam i to nie do celow swoich tylko dla uzytkownikow.. prowadze strone kulinarna i dalej to skrypcik co napisales dla nich aby sie mogli logowac i dodawac przepisy
Październik 30th, 2008 at 01:52
no ja mam 2.6.3 i jakos tych dodatkowcyh opcji nie moglem poprawic i zalapac…
moze chcialbys pomoc. to wtedy mialbym wszytsko tak jak nalezy.
chodzi o te przekirowania w wp-login itp
Marzec 15th, 2009 at 19:43
No właśnie ja też chciałem tego użyć w nowszej wersji 2.6 albo 2.7 i się zaciąłem na zmianach. Czy jest szansa na uaktualnienie dla nowego WP?
Grudzień 29th, 2009 at 15:15
dzięki :)
Styczeń 26th, 2010 at 19:36
Możesz to poprawić do wersji 2.9.1 ?
Luty 25th, 2010 at 11:14
Witam jestem świeży w temacie WordPress i chciałem się dowiedzieć czy na WP można postawić niewielki portal informacyjny i czy można tak zmodyfikować panel użytkownika by można było przesyłać wiadomości między zarejestrowanymi użytkownikami?