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:

  • Meta

    if ( is_user_logged_in() ) {
    global $userdata;
    ?>


  • 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


    13 Responses to “WordPress: Panel Logowania w Sidebar”

  • Patryk Dominiczak Says:

    Edit: coś nie bardzo mi wyszło umieszczenie kodu

  • wallace Says:

    Poprawiłem (chodziło o jeden zabłąkany slash ?), dzięki.

  • janusz Says:

    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

  • janusz Says:

    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

  • Maciek Says:

    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?

  • tom Says:

    Możesz to poprawić do wersji 2.9.1 ?

  • goral21ss Says:

    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?