Для того чтобы облегчить процесс регистрации пользователей и сделать интерфейс ресурса интуитивно понятным, иногда оказывается удобным размещать форму входа не на отдельной странице, как то выполняется в WordPress по умолчанию (/wp-login.php), а прямо на сайте — в сайдбаре или заголовке. Существует множество способов, позволяющих реализовать добавление формы к различным областям ресурса. В данном разделе мы остановимся на одном из самых популярных и понятных вариантов решения указанной проблемы.
В примере, приведенном ниже, мы предположим, что форма входа будет располагаться в сайдбаре, а поскольку сайдбар — это не что иное как список (ul), то форма будет являться одним из пунктов этого списка (li). Естественно, если мы захотим перенести форму в заголовок, нам придется оборачивать ее в div, однако это лишь вопрос разметки. Перейдем к примеру:
<?php if (!(current_user_can('level_0'))){ ?> <h2>Login</h2> <form action="<?php echo get_option('home'); ?>/wp-login.php" method="post"> <input type="text" name="log" id="user_login" value="<?php echo wp_ specialchars(stripslashes($user_login), 1) ?>" size="20" /> <input type="password" name="pwd" id="user_pass" size="20" /> <input type="submit" name="submit" value="Send" /> <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> <p>Lost your password? <a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword"> Recover!</a></p> <?php } else { ?> <h2>Admin</h2> <ul> <li><a href="<?php bloginfo('wpurl'); ?>/wp-admin/">Dashboard</a></li> <li><a href="<?php bloginfo('wpurl'); ?>/wp-admin/post-new.php">Write a post</a></li> <li><a href="<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">Logout</a></li> </ul> <?php }?>
В первую очередь мы осуществляем проверку, является ли посетитель сайта зарегистрированным пользователем. Если указанная проверка привела к отрицательному результату, то мы выводим на экран форму входа. Наиболее важной частью кода является строка:
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
Она задает перенаправление, происходящее после входа в систему. Перенаправление возвращает пользователя к тому месту, откуда он начал работать с формой.
Двигаемся дальше. Ветка else будет выполнена в том случае, если пользователь уже зарегистрирован. Здесь идет череда проверок, которая в зависимости от пользовательского уровня определяет, какие элементы и ссылки выводить на экран. К примеру, если пользователь обладает нулевым уровнем, зачем ему показывать ссылку «Написать запись»? Ведь он все равно не сможет осуществить это действие.
Помните, что если ваш проект не нуждается в отдельной форме входа, то размещать ее «просто так, чтоб была» не нужно. Тем самым вы можете привлечь злоумышленников, которые вполне могут отыскать неприкрытые лазейки в коде и осуществить свои непотребные деяния. Тем более, зачем просто так забивать пространство сайта?
Logout не работает. В алресную строку при логауте добавляется мусор. Работает только такая: Logout
И ещё,при неправильном вводе пароля выкидывает в дефолтное окноавторизации, что всю эту писанину сводит к нулю.
А вот мне интересно , почему автор не ответил на предыдущий комментарий.
Потому что комментарий появился через два года после написания статьи, и мне было в падлу снова разбираться в этом.
Ответ БОМБА :-)
Сайт классный — без воды как многие сейчас пытаются писать статьи в блогах.
Очень приятно читать — даже статьи написанные 6 ЛЕТ!!! назад :) Вам бы и правда немного подредактировать статьи и цены бы сайту не было. Прочитал все 5 статей про формы регистрации на wordpress. До сих пор актуально и ценно. Спасибо.