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

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

Для этого вам понадобятся 2 ключевые функции WordPress:

1. wp_signon() - аутентифицирует пользователя с возможностью запоминания учетных данных.

2. wp_create_user() - добавляет нового пользователя в базу данных WordPress.

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

Рассмотрим пошаговую систему создания собственную страницу регистрации/входа пользователя WordPress без плагина.

Шаг 1. Создайте новую страницу-шаблон с именем login.php

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

Поскольку в любом шаблоне нам нужно использовать такую функцию, как get_header() для подключения всех нужных тегов в верхней части страницы, а также шапки сайта с меню и другими данными, то ее необходимо вызвать в верхней части шаблона. Однако при этом происходит отправка заголовков, которые мы будем переопределять в нашем коде при наличии ошибки в имени пользователя или пароле с помощью header("Location: " . home_url() . "/login?error=true");

Поэтому обработку данных формы будем проводить ДО вызова функции get_header().

После того, как шаблон страницы login.php создан,  нужно создать новую страницу, которая использует этот шаблон «Login», и назвать ее «Вход на сайт». Для нее важно задать ссылку login. Конечно, вы можете называть ее как хотите, но в этой статье жестко указаны ссылки на URL-адрес страницы: yourwebsite.com/login/.

Страница login

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

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

В том случае, если пользователь ввел неверные данные при входе на сайт, ему с помощью скрипта будет выведено сообщение об этом и предложение перейти на страницу регистрации, которую мы создадим ниже:

Неверные данные в форме входа

Обратите внимание:

В шаблонах в этой статье использованы функции get_header() и get_footer() для подключения данных из header.php и footer.php, а также всех стилей и скриптов, которые загружаются в них для страниц сайта. Однако здесь нет ни функции get_sidebar(), ни какой-либо разметки, которая обычно существует в файлах шаблонов для основного блока страницы/поста.

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

Шаг 2 - Перенаправления

Если вы перейдете на новую страницу входа, то она уже должна позволить вам успешно войти в систему.

Однако вы, скорей всего, захотите перенаправить любого, кто пытается использовать стандартные страницы входа в WordPress, на вашу новую пользовательскую страницу входа, например, с адреса http://yoursite.com/wp-login.php. Для этого вставьте код, приведенный ниже, в файл functions.php вашей темы:

Шаг 3 - Создаем страницу регистрации

Нам нужно повторить процесс для страницы регистрации нового пользователя - создаем файл register.php, который будет также шаблоном, но для страницы регистрации. Для нее нужно выбрать шаблон с именем Register и ввести ссылку register (http://yoursite.com/register):

Страница регистрации пользователя в WordPress

Код для этой страницы таков:

Здесь мы проверяем все поля формы на соответствие определенным критериям.

Эта проверка будет простой. В ней мы создаем массив ошибок $errors, а затем проверяем количество элементов в нем. Если поля формы будут заполнены неверно, массив не будет пустым, а в  <span class="error"></span>, который есть после каждого поля, будет выведена ошибка.

Ошибки при регистрации нового пользователя

Пользователь будет зарегистрирован на вашем WordPress-сайте только в том случае, если массив ошибок пуст.

Вы можете использовать отслеживание всех ошибок либо сократить их количество в зависимости от ваших требований.

Перенаправления на страницу регистрации в functions.php

И снова мы добавляем некоторые перенаправления в наш файл functions.php, чтобы полностью скрыть стандартную страницу регистрации WordPress:

Опять же, наш скрипт регистрации предполагает, что страница регистрации находится по адресу yourwebsite.com/register/. Кроме того, перейдет пользователь на эту страницу только в том случае, если еще не выполнен вход на сайт. То есть вы как администратор, залогиненный на своем сайте, не сможете зарегистрировать пользователя, если не выйдете из своего аккаунта.

Теперь у вас есть страницы входа и регистрации, которые можно настроить так, как вы хотите.

Итого

Теперь вы можете отказаться от стандартных страниц входа и регистрации WordPress для вашего сайта. Эта реализация может быть доработана с помощью настраиваемых ссылок для выхода из системы и правильного метода работы с забытыми паролями.

По мотивам статьи Create a simple custom WordPress login and sign up without plugins

Автор: Админ

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

  1. Очень крутая статья, спасибо большое. Только вот вопрос, когда пользователь вошел в аккаунт на странице login, его перебрасывает на главную страницу, но потом пользователь все равно сможет зайти на страницу login и у него будет опять видна форма входа в аккаунт, что нужно дописать чтобы пользователю был заблокирован вход на эту страницу, если он уже в аккаунте и чтобы срабатывал допустим редирект на личный кабинет пользователя, за ранее спасибо !

  2. Привет! Да, ошибки не выводит. Может статью подправит админ? Надо. Статья то правда полезная

    • Статья исправлена, код несколько видоизменен, добавлены скриншоты.
      Проверено для WordPress 5.9

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

    • Ошибку вызывали перенаправления с помощью заголовков типа header("Location: " . home_url() . "/login?error=true");.
      Это происходило из-за того, что вы наверняка вставляли форму после вызова функции get_header(), когда заголовки уже были посланы на сервер.

  4. Спасибо, за пример кода!
    Подскажите пожалуйста, как этому научиться, где брать справочный материал чтобы вот так собрать форму, за ранее оч спасибо !!! )

    • Сложный вопрос. Чтобы научиться чему-то, во-первых, нужно желание, во-вторых, нужно начать что-то делать, в-третьих, у вас должна быть готовность пробовать разные варианты, отслеживать и редактировать ошибки. Что касается WordPress, то вашим любимым сайтом, скорей всего, станет https://wp-kama.ru/, т.к. на нем представлены переводы функций из Кодекса WordPress, а также любые сайты, посвященные WP, в том числе и на английском языке.

  5. Спасибо! То, что нужно.

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

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