Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu
  • О чем это все
Menu

WordPress. Вход в админку с любой страницы блога

09.02.200915.09.2009

wordpressПродолжаю публиковать, по мере нахождения, переводы небольших, но весьма полезных заметок о расширении базовой функциональности шаблонов WordPress, без использования дополнительных плагинов.

И сегодня хочу вам представить небольшую статью, о том как можно вывести блок авторизации/регистрации пользователей WordPress в любое место вашего шаблона.

Итак в результате наших действий, мы получим вот такие блоки до и после авторизации.

до авторизации

после авторизации

 

Для начала определимся что именно нам нужно отобразить в этом блоке:

  1. Поле для ввода имени пользователя
  2. Поле для пароля
  3. Чекбокс для запоминания пароля
  4. Скрытое поле, сообщающее вордпрессу, куда перенаправить пользователя после авторизации
  5. Кнопку отправки данных
  6. Две ссылки, одну для регистрации, другую для восстановления пароля

Поскольку мы собираемся делать форму, работающую в любом шаблоне, мы будем использовать функцию get_option(’home’), которая получает полный путь, к папке в которой установлен WordPress.

<h3>Login</h3>
<form action="<?php echo get_option('home'); ?>/wp-login.php" method="post">

    <p><label for="log">User</label><input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" /> </p>

    <p><label for="pwd">Password</label><input type="password" name="pwd" id="pwd" size="20" /></p>

    <p><input type="submit" name="submit" value="Send" class="button" /></p>

    <p>
       <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
       <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
    </p>
</form>

<a href="<?php echo get_option('home'); ?>/wp-register.php">Register</a>
<a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Recover password</a>

В скрытое поле, мы поместили URL страницы, с которой логинится пользователь, так что после авторизации, он снова будет направлен на эту страницу.

Для того чтобы показывать форму входа/регистрации, только неавторизованным пользователям, мы воспользуемся функцией current_user_can(), с параметром level_0.

<?php if (!(current_user_can('level_0'))){ ?>
    //код указанный выше
<?php } else { /*next to come*/}?>

Последнее что осталось сделать, это написать код, для авторизованного пользователя, следующий после else

<ul class="admin_box">
            <li><a href="<?php echo get_option('home'); ?>/wp-admin/">Dashboard</a></li>
            <li><a href="<?php echo get_option('home'); ?>/wp-admin/post-new.php">Write new Post</a></li>
            <li><a href="<?php echo get_option('home'); ?>/wp-admin/page-new.php">Write new Page</a></li>
            <li><a href="<?php echo get_option('home'); ?>/wp-login.php?action=logout&redirect_to=<?php echo urlencode($_SERVER['REQUEST_URI']) ?>">Log out</a></li>
</ul>

В результате у нас получился вот такой код, и вам остается только скопировать его и вставить в любом месте вашего шаблона:

<?php if (!(current_user_can('level_0'))){ ?>
<h3>Login</h3>
<form action="<?php echo get_option('home'); ?>/wp-login.php" method="post">

    <p><label for="log">User</label><input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" /> </p>

    <p><label for="pwd">Password</label><input type="password" name="pwd" id="pwd" size="20" /></p>

    <p><input type="submit" name="submit" value="Send" class="button" /></p>

    <p>
       <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
       <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
    </p>
</form>

<a href="<?php echo get_option('home'); ?>/wp-register.php">Register</a>
<a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Recover password</a>
<?php } else { ?>
        <ul class="admin_box">
            <li><a href="<?php echo get_option('home'); ?>/wp-admin/">Dashboard</a></li>
            <li><a href="<?php echo get_option('home'); ?>/wp-admin/post-new.php">Write new Post</a></li>
            <li><a href="<?php echo get_option('home'); ?>/wp-admin/page-new.php">Write new Page</a></li>
            <li><a href="<?php echo get_option('home'); ?>/wp-login.php?action=logout&redirect_to=<?php echo urlencode($_SERVER['REQUEST_URI']) ?>">Log out</a></li>
        </ul>

<?php }?>

Оригинал статьи.

29 комментариев

  1. akm:
    12.02.2009 в 11:47

    Удобно, секнс. В WP2.7. добавлена ф-ция wp_logout_url(%REDIRECT_URL%), которая автоматич. разлогинивает и редиректит по указанному пути ;)

    Ответить
  2. ferol:
    02.03.2009 в 02:37

    а как можно вывести надпись Вы вошли как User

    Ответить
    1. dreamhelg:
      02.03.2009 в 09:35

      Для этого нужно вставить одну строчку в список со ссылками для авторизованных пользователей:

        Вы авторизовались как user_login); ?> ...

      Эта строчка выведет имя пользователя блога.

      Ответить
  3. Тим:
    10.04.2009 в 21:31

    А если писать слова ЛОГИН и ПАРОЛЬ, русскими буквами, то отображаются кракозябры :(
    Как лечить?

    Ответить
    1. dreamhelg:
      11.04.2009 в 21:06

      проверьте кодировку в который вы сохраняли файл, должна быть utf-8

      Ответить
  4. Vadim:
    12.05.2009 в 19:48

    Здравствуйте!
    Вписал код в правый сайдбар. Все нормально отображается.
    Но когда входишь под именем зарегистрировааного пользователя, Надписи:
    Dashboard
    Write new Post
    Write new Page
    Log out
    выводятся вертикально в правом верхнем углу, а весь сайт опускается вниз.
    У меня шаблон от сайта:
    http://www.mangoorange.com (локализованный).
    Спасибо!

    Ответить
  5. Vadim:
    12.05.2009 в 19:49

    Ошибся ! в леовм верхнем углу

    Ответить
    1. dreamhelg:
      13.05.2009 в 07:02

      Возможны разные причины, но если такое поведение происходит после того как вы залогинились, возможно стоит изменить название класса для UL списка, скорее всего с таким же именем у вас в css есть другой класс. Вместо admin_box, напишите любое другое название.

      Ответить
  6. tatarinme:
    26.05.2009 в 14:04

    а как сделать чтоб при автоизации пользователи отсавались на той страницы от куда они авторизовались чтоб она не заходили в админку???

    Ответить
    1. dreamhelg:
      26.05.2009 в 14:09

      Вот так, как написано в этой статье. Авторизовавшись, они остануться на этой же странице.

      Ответить
  7. tatarinme:
    28.05.2009 в 12:48

    ясно абобольшое !!!!

    Ответить
  8. Tima:
    21.08.2009 в 14:14

    А что на счет регистрации? если нужно чтоб пользователь регился на одной из страничек?

    Ответить
    1. dreamhelg:
      26.08.2009 в 15:30

      там в примере, одна из ссылок ведет к регистрации пользователей

      Ответить
  9. STROGOS:
    13.09.2009 в 23:23

    >
    Вы авторизовались как
    user_login);
    ?>
    …

    Она выводит добро пожаловать админ при любом пользователе..

    Ответить
  10. mse:
    08.10.2009 в 02:49

    выхоту в статье не работает
    а работает он вот так :)

    <a href="» title=»»>

    Ответить
    1. dreamhelg:
      08.10.2009 в 07:15

      Справедливое замечание, а не работает он потому, что на момент написания статьи, был актуален вордпресс, версии 2.6, а в 2.7-8 для этого есть отличный теплейтный тег — wp_loginout, он выводит ссылку на вход, если пользователь не авторизован, и на выход, если авторизован. Очень удобно.

      Ответить
  11. Дмитрий:
    09.02.2010 в 01:31

    Всё чудесно, но когда юзер разлогинивается, то его кидает на страницу авторизации админки(((
    можно как-то доработать эту деталь? чтобы его допустим на главную редиректило?

    Ответить
    1. dreamhelg:
      09.02.2010 в 09:53

      Для того, чтобы пользователь возвращался на указанную страницу, можно использовать функцию wp_loginout, которая принимает $redirect. Например, чтобы пользоваель возвращался на главную старницу блога, следует написать что-то вроде:

      wp_loginout(get_option('home'))

      Ответить
      1. Дмитрий:
        09.02.2010 в 18:08

        у нас последняя строчка в коде
        <a href="/wp-login.php?action=logout&redirect_to=»>Log out

        куда здесь добавить wp_loginout(get_option(‘home’))
        ???

        Ответить
  12. Дмитрий:
    09.02.2010 в 18:11

    <a href="/wp-login.php?action=logout&redirect_to=»>Log out

    т.е.

    Ответить
  13. Дмитрий:
    09.02.2010 в 18:50

    всё..спасибо…настроил)

    теперь следующая проблема
    при вводе неправильного пароля тоже кидает в панель авторизации…
    как теперь, что при неправильно вводе пароля выдавалось сообщение и выкидывало например на страницу с этим сообщением7

    Ответить
  14. ZOndeR:
    10.02.2010 в 10:52

    а в какие файлы эти коды вписывать?

    Ответить
    1. dreamhelg:
      10.02.2010 в 15:50

      Там, где хотите вывести форму входа

      Ответить
  15. Nadine:
    20.02.2010 в 19:01

    А у меня другой вопрос. Я подгрузила одну тему, а в ней нигде нет входа в админку. Как я могу войти в свою админпанель?

    Ответить
  16. Kama:
    14.08.2010 в 20:03

    Я раньше тоже так вставлял в сайдбар логин-форму и ссылки которые мне необходимы для редактирования блога. Но все это муторно, к тому же нередко приходилось выносить новые ссылки — опять лезть в шаблон. В конечном счете, сделал плагин — активировал и порядок :)

    Может кому пригодится: http://wp-kama.ru/id_127/plagin-dlya-legkogo-upravleniya-saytom-na-wordpress-versiya-3.html

    Плагин универсальный получился — подойдет под любой шаблон.

    Ответить
    1. Сергей:
      18.08.2011 в 18:03

      Спасибо, реальный плагин!
      Использую:-)

      Ответить
  17. Estrella:
    14.08.2011 в 11:57

    Люди! помоги ПОЖАЛУЙСТА зарегистрироваться на word press!!!!!!!!!
    уже истыкала все,что возможно и ничего не получается!

    Ответить
  18. Надежда:
    07.09.2011 в 15:33

    Помогите. не работает кнопка Log Out в админке. Когда нажимаю на Log Out , не могу выйти с админки, выдаёт, что страница не может загрузиться. Так и на домене и на поддомине. Буду премного благодарна.

    Ответить
  19. Максим:
    21.11.2011 в 21:31

    Спасибо за полезную информацию!

    Ответить

Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Об авторе

avatar

Ольга Фомина

Senior Frontend Developer
Почтовые технологии
telegram youtube instagram vkontakte

Рубрики

  • angular
  • JavaScript
  • nodejs
  • svg
  • wordpress
  • верстка
  • изучаем Jquery
  • общая
  • переводы
  • плагины Jquery
  • юнит-тесты
© 2023 Очередной блог фрилансера | Powered by Superbs Personal Blog theme