Создание своей страницы авторизация на сайте WordPress

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

Пример формы – здесь.

Функции, которые нам могут быть полезными, но не обязательно все их использовать. Все функции буду приведены без подробного описания. Примечание: эти функции будут использоваться при создании формы, которая  будет обращаться к сайту посредством AJAX.

Функция проверки наличия логина в базеusername_exists($user_login).

Эта функция будет полезна в момент регистрации нового пользователя. Если пользователь есть в базе WP, то вернет true, иначе false.

Пример текстового поля формы ввода логина:

Все вводимые данные, в любых видах форм, мы получаем через переменную $_POST.  Например, в нашем примере $user_login=$_POST[“log”], где log, это значение переменной, которая берется из текстового поля (input ) нашей формы  с названием  log: (name=”log”).

Функция создания пользователяwp_create_user($user_login,$pwd,$user_email), где $user_login – логин, $pwd – пароль, $user_email – почта

Функция обновления пароля wp_set_password($pwd,$user_id). К авторизации эта функция не относится, но будет полезна при создании страницы профиля пользователя или для сброса/установки нового пароля. Для обновления пароля нам понадобится найти id пользователя, тут есть разные варианты.
Например, получим id по логину:

можно по e-mail:

Можно еще получить id непосредственно из таблицы wp_users.
Создадим запрос к таблице wp_users, где в условии отбора будет стоять логин, по которому мы хотим получить id пользователя:

Функция проверки пароляwp_check_password($pas,$hash), с помощью это функции мы можем проверить, соответствует ли введенный пароль, паролю, который записан в базе.
Пример:

Функция генерации пароля wp_generate_password(). По умолчанию генерируется пароль из 12 символов, если хотим увеличить длину пароля и исключить такие редкие символы, как !@#$%^&*(), то

а если наоборот хотим усложнить, и включить в пароль такие символы, как –_ []{}<>~`+=,.;:/?|:,то

У WP есть своя функция, с помощью которой мы можем вызывать форму авторизации в любом месте, – wp_login_form($args).

Если эту функцию внедрить в код, то у вас появиться форма авторизации на сайт.
Например, создадим страницу и с помощью шорт-кода разместим форму регистрации.
Лучше всего будет, если все манипуляции с формой авторизации/регистрации мы реализуем в виде отдельного плагина.

Для создания своего плагина нужно создать папку в директории  /wp-content/plugins/, например, создадим папку wp_login, а в ней создадим одноименный файл wp_login.php. Для всех манипуляций с файлами вашего сайте, используйте ftp клиент вашего хостера  или ftp клиент под Windows  или Linux, например FileZilla. Кстати, есть более интересный и универсальный вариант работы с файлами вашего сайта, можно установить  плагин файлового менеджера WP File Manager

Далее, минимум, что должен содержать наш файл плагина, это его название

Сохраните файл wp_login.php и активируйте плагин в WP. Далее, весь код будет размещаться в нашем файле wp_login.php.

Создадим шорт-код с формой авторизации

Теперь, когда мы сохраним все изменения, можем создать страницу в WP, и вставить шорт-код – [wp_login] , после чего можно просмотреть созданную страницу. У вас появится форма авторизации, и скорее всего она у вас будет без  стилевого оформления, но при этом сами классы будут присутствовать.

Код, который генерирует wp_login_form()

Как видно, в коде есть классы, к которым вы можете подвязать свои стили, и привести форму к желаемому виду. Примечание: вы можете и не использовать wp_login_form(), а придумать свой код формы.

Стили формы лучше прописать в отдельно файле css, который мы подключим в нашем плагине. Для это вначале создадим папку css, а в ней создадим файл style.css.

В файла wp_login.php,  пропишем доступ к нашему css файлу.

Например, можно добавить вот такой стиль:

Получим следующий внешний вид:

Пример – здесь

В функцию wp_login_form() можно передавать параметры, в виде массива. Пример:

В этом примере, echo принимает два параметра: true или false, что означает, как будет обрабатываться вывод функции wp_login_form(), будет ли  сама форма помещена в переменную, или сразу ее вывести на экран. ‘redirect’ указывает, куда перейти после успешной авторизации.

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

В начало функции wp_login_site() добавим следующий код:

И ниже добавим код обработки всех ошибок:

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

Итог кода по странице авторизации:

Файл со стилями style.css

Используя шорт-код, можно интегрировать в тему авторизацию на сайте. Для этого нужно вставить следующий код, в тему вашего сайта:

<?php echo do_shortcode("[wp_login]"); ?> 

Авторизацию можно сделать и виде виджета, но сам виджет мы создавать не будем, можно воспользоваться плагином, который позволяет создавать виджеты и вставлять в них php код, например PHP Code Widget
Теперь, думаю разумно было-бы, если мы авторизируемся со странице, на которой размещена форма авторизации, возвращаться обратно на страницу, с которой мы перешли. А, если авторизируемся, например, с сайдбара, то остаться на этой же странице.
Для этого можно использовать шорт-код с передачей параметра, который в свою очередь будет обрабатываться  функцией wp_login_site();. Например, на странице авторизации шорт-код будет [wp_login] , а в виджете [wp_login url=1] 

В функцию wp_login_site() мы теперь будем передавать параметр, поэтому теперь будет такой вид wp_login_site($atts), $atts – будет принимать значение url=1.

Далее, нужно добавить условие обработки нашего параметра, имя и значение параметра шорт-кода, можете придумать своё

Получается, если мы параметр не указали, то url равно нулю, а если указали, то принимаем его и проверяем на совпадения условия, в моем случае, я передал 1. Переменная $redirect будет тогда принимать одно из двух значений, вернуться на предыдущую страницу – $_SERVER[‘HTTP_REFERER’], или вернуться на текущую – $_SERVER[‘REQUEST_URI’]. Осталось изменить в функции wp_login_form(), $_SERVER[‘HTTP_REFERER’] меняем на переменную $redirect

Итог кода по странице авторизации:

Продолжение следует…

 

(Пока оценок нет)
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x