Приветствую вас, дорогие друзья. Настало время снова окунуться в мир программирования для WordPress.
В предыдущих публикациях мы уже поговорили о следующих аспектах данной CMS:
В данной статье речь пойдет о регистрации и авторизации в WordPress.
Не секрет, что WordPress позволяет работать с различными группами пользователей, а не только с одним администратором. Данная особенность позволяет реализовать вполне сносный функционал регистрации и авторизованного доступа к тому или иному контенту (если уж по какой-то причине так нужно).
Думаю все знают, что разрешение на регистрацию новых пользователей выдает администратор, ставя галочку в настройках админки WordPress (Параметры→Общие).
Рис. 1. Включение регистрации новых пользователей в админке WordPress.
Теперь пользователи смогут переходить на страницу http://vas_domen.ru/wp-login.php?action=register и наблюдать там стандартную форму регистрации WordPress.
Рис. 2. Стандартная форма регистрации WordPress.
Если регистрацию в админке вы не разрешили (см. рис. 1), то и форма регистрации вам не отобразится. Вместо нее вы увидите сообщение о невозможности регистрироваться на данном блоге.
Стандартная процедура регистрации в WordPress организована довольно грамотно (если не считать запроса имени пользователя, он же login, при регистрации; мы то с вами знаем, что вполне достаточно только адреса эл. почты). После проверки на занятость другим пользователем указываемого логина и e-mail, WordPress отправит валидационное письмо и проверит правильность введенного при регистрации адреса эл. почты. Все круто и правильно.
Для авторизации достаточно перейти по адресу http://vash_domen.ru/wp-login.php. Вы увидите стандартную форму авторизации (видели вы ее уже сто раз наверное, когда в свой блог логинились).
Рис. 3. Стандартная форма авторизации WordPress.
Есть даже стандартная процедура восстановления пароля. Перейдите по ссылке http://vash_domen.ru/wp-login.php?action=lostpassword и вы увидите форму грамотного функционала восстановления.
Рис. 4. Стандартна форма восстановления пароля WordPress.
Уж не знаю, зачем я рассказываю эти банальности. Они всем известны? Тогда будем считать, что для разогрева.
Чем мне не нравится стандартный функционал регистрации/авторизации в WordPress? — Да, видимо, тем что на нормальных сайтах регистрация и авторизация выглядит немного по-другому.
Ну во-первых, на нормальных сайтах нет логотипа WordPress в формах регистрации/авторизации. С этой проблемой, кстати, можно легко бороться. Вот тут процедура подробно описана. Суть сводится к цеплянию на хук login_head вывода стилей для #login h1 a. Обратите внимание на директиву !important в перечислении свойств стиля. Именно благодаря этой директиве наложенные вами стили считаются наиболее приоритетными.
По аналогии с приведенным примерам на странице авторизации/регистрации можно наворатить стилями, все, что вашей душеньке будет угодно.
С детским садом закончили, переходим к серьезным вещам. На нормальном сайте обычно форма авторизации и регистрации вписывается в дизайн сайта, а не располагается на отдельных страницах. Впишем форму регистрации в дизайн сайта
С регистрацией пользователя будет много мороки из-за необходимости верифицировать указанный при регистрации e-mail. Я решил эту проблему следующим тернистым путем:
Создал отдельную таблицу в БД для хранения имени пользователя, e-mail и пароля (генерируется автоматически). В этой таблице будут храниться данные, указанные пользователем в регистрационной форме до верификации адреса эл. почты. Также в этой таблице будет храниться проверочный код (зачем он нужен, станет понятно дальше).
В форму регистрации пользователь вводит логин и e-mail. Логин и e-mail валидируются на предмет совпадения с данными уже существующих пользователей WordPress. Ну и естественно проверяется ввел ли пользователь хоть что-то в поля «Логин» и «E-mail», а также соответствует ли введенный текст регулярному выражению для адреса эл. почты.
Если валидация прошла успешно, на почту указанную при регистрации уходит сообщение, содержащее проверочную ссылку.
Если пользователь перешел по ссылке, то стандартным методом добавления нового пользователя wp_create_user($user_name, $password, $user_email) происходит сохранение нового пользователя уже в стандартной таблице пользователей WordPress.
Видеоурок. Как сделать свою регистрацию пользователей в WordPress Бонусом в видеоуроке показано как сделать валидацию имени пользователя и адреса эл. почты. Продемонстрированный подход годится на все случаи жизни.
Скачать плагин, демонстрируемый в видеоуроке (5.49 кБ). Листинг 1. HTML-код формы регистрации, демонстрируемый в видеоуроке.
В качестве дополнительных плюшек можно добавить проверку разрешения регистрации в админке (см. рис. 1). Проверить можно функцией get_option('users_can_register'). Если функция вернет TRUE, то регистрироваться можно.
Еще я бы сделал функцию в плагине, отвечающую за вывод формы регистрации, чтобы она выводилась именно там где нужно, а не болталась в посте без надобности. Но это уже в следующий раз.
Думаю имеет смысл показывать форму регистрации только не авторизованным пользователям. Проверять авторизован пользователь или нет позволяет функция is_user_logged_in(). Она вернет TRUE если пользователь имеет статус авторизованного.
После перехода пользователя по валидационной ссылке из e-mail, у вас может возникнуть законное желание сразу его авторизовать. Это можно сделать следующим образом. Листинг 2. PHP-код насильственной авторизации пользователя в WordPress.
Как вы понимаете, авторизация происходит благодаря методу wp_signon.
Раз уже речь зашла об авторизации, то давайте поговорим, как это сделать без насилия. Авторизация пользователя WordPress своей формой
Точно также, как и в случае регистрации, я запросто могу представить себе, что вам захотелось прикрутить свою собственную форму авторизации, а не гонять пользователя на рис. 3.
Используйте HTML-код, представленный ниже. Единственное, что нужно сохранить, это атрибуты name и адрес в атрибуте action тега form (иначе WP не поймет, что вы от него хотите). Листинг 3. PHP-код формы авторизации. Можно использовать в плагине.
Атрибут action тега form содержит функцию wp_login_url. Она на столько замечательная, что позволяет в качестве атрибута передать адрес, на который пользователя вернет после авторизации. Это может быть адрес данной страницы (как в листинге 3) или URL личного кабинета — решать вам.
На этом пока все. До встречи в следующих видеоуроках.
P.S.: На правах саморекламы. А вы знаете, что я разработал замечательный плагин, позволяющий продавать инфотовары с блога на WordPress?
Комментариев нет:
Отправить комментарий