Вы хотите разрешить своим пользователям регистрироваться на вашем сайте? Будь то для того, чтобы юзеры писали в блог или просто комментировали записи на сайте, WordPress позволяет вам включить регистрацию пользователей. В сегодняшней статье мы покажем вам как разрешить регистрацию пользователей на своем сайте WordPress и как ими управлять.
Включаем регистрацию пользователей в WordPress
Для активации возможности регистрации пользователей просто переходим в Настройки » Общие и прокручиваем до раздела Членство. Отмечаем галочку рядом с опцией Любой может зарегистрироваться.
Далее нужно выбрать Роль нового пользователя по-умолчанию. WordPress задает эту роль в значение Подписчик, однако ее можно изменить на нужную вам. После этого нужно кликнуть на кнопку «Сохранить изменения» для применения изменений.
Теперь ваш сайт на WordPress открыт для регистрации новых пользователей.
Добавляем ссылки Входа и Регистрация в WordPress
После того, как вы открыли регистрацию для пользователей на своем сайте WordPress, следующим шагом будет объявление вашим пользователей о том, что они могут регистрироваться и входить на ваш сайт.
Вам нужно добавить ссылки на страницу входа и регистрации. Существует несколько способов это сделать.
Способ 1: Виджет Мета
Самым простым способом добавить ссылку для входа — это добавление виджета Мета в свой сайдбар. Просто перейдите в раздел Внешний вид » Виджеты административной панели сайта и добавьте виджет Мета в сайдбар.
Вот так будет выглядеть ссылка входа на вашем сайте.
Способ 2: Использование собственных страниц для входа
Также вы можете создать свои собственные страницы WordPress для входа и регистрации. Смотрите нашу статью о том, как создать собственную страницу входа в WordPress.
Предотвращаем спам-регистрации
Существует множество спам-ботов для поиска сайтов на WordPress, открытых для регистрации. Эти боты могут добавлять спам-аккаунты на ваш сайт, что может повлиять на безопасность сайта. К счастью, предотвращение спам-регистраций в WordPress крайне простое.
Все, что вам нужно сделать, это установить и активировать плагин Stop Spammers. После активации перейдите в Настройки » Stop Spammers для конфигурации плагина.
![stop-spammers-plugin[1]](http://wpfc.ml/b.gif)
Первым делом вам нужно добавить в белый список ваш собственный IP адрес. Далее, можно просто сохранить настройки по-умолчанию.
Stop spammers — это мощный плагин со множеством опций для борьбы со спам-регистрациями. Рекомендуем ознакомиться со статьей о том, как предотвратить спам-регистрации на своем WordPress-блоге.
Управление пользователями в WordPress
Всех зарегистрированных пользователей на вашем сайте можно просмотреть, кликнув по меню Пользователи в административной панели WordPress. WordPress отобразит вам список пользователей с их логинами, именами, ролью на сайте и email адресами.
Являясь администратором, вы можете удалить любого пользователя в любое время. Также есть возможность редактировать профили пользователей, изменять их роли и даже менять пароли. Это дает вам полный контроль над тем, что может и чего не сможет сделать пользователь на вашем сайте.
Вот и все, мы надеемся, что эта статья помогла вам научиться разрешать регистрацию пользователей на своем сайте WordPress.
Если вы только начинаете разбираться с WordPress, то не забудьте посетить нашу рубрику WordPress для новичков, где мы публикуем материалы специально для новых пользователей WordPress.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
wpincode.com
Приветствую вас, дорогие друзья. Настало время снова окунуться в мир программирования для WordPress.
В предыдущих публикациях мы уже поговорили о следующих аспектах данной CMS:
- Как избавиться от мусора в разделе HEAD
- Меню WordPress
В данной статье речь пойдет о регистрации и авторизации в 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 в перечислении свойств стиля. Именно благодаря этой директиве наложенные вами стили считаются наиболее приоритетными.
По аналогии с приведенным примерам на странице авторизации/регистрации можно наворатить стилями, все, что вашей душеньке будет угодно.
Что такое хук и как на него цеплять функции вы сможете узнать из моего видеокурса по разработке плагина для WordPress.
С детским садом закончили, переходим к серьезным вещам. На нормальном сайте обычно форма авторизации и регистрации вписывается в дизайн сайта, а не располагается на отдельных страницах.
Впишем форму регистрации в дизайн сайта
С регистрацией пользователя будет много мороки из-за необходимости верифицировать указанный при регистрации 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-код формы регистрации, демонстрируемый в видеоуроке.
<div> <form action="" method="get" id="m_reg_user_form"> <div> <label for="m_user_name">Имя:</label> </div> <div> <input type="text" name="m_user_name" id="m_user_name"> </div> <div> <label for="m_user_email">Эл. почта:</label> </div> <div> <input type="text" name="m_user_email" id="m_user_email"> </div> <div> <input type="submit" name="m_regiser_usr_btn" value="Зарегистрироваться"> </div> </form> </div>
В качестве дополнительных плюшек можно добавить проверку разрешения регистрации в админке (см. рис. 1). Проверить можно функцией get_option(‘users_can_register’). Если функция вернет TRUE, то регистрироваться можно.
Еще я бы сделал функцию в плагине, отвечающую за вывод формы регистрации, чтобы она выводилась именно там где нужно, а не болталась в посте без надобности. Но это уже в следующий раз.
Думаю имеет смысл показывать форму регистрации только не авторизованным пользователям. Проверять авторизован пользователь или нет позволяет функция is_user_logged_in(). Она вернет TRUE если пользователь имеет статус авторизованного.
После перехода пользователя по валидационной ссылке из e-mail, у вас может возникнуть законное желание сразу его авторизовать. Это можно сделать следующим образом.
Листинг 2. PHP-код насильственной авторизации пользователя в WordPress.
$creds = array(); $creds['user_login'] = $email_check->user_name; $creds['user_password'] = $email_check->password; $creds['remember'] = false; $user = wp_signon($creds, false);
Как вы понимаете, авторизация происходит благодаря методу wp_signon.
Раз уже речь зашла об авторизации, то давайте поговорим, как это сделать без насилия.
Авторизация пользователя WordPress своей формой
Точно также, как и в случае регистрации, я запросто могу представить себе, что вам захотелось прикрутить свою собственную форму авторизации, а не гонять пользователя на рис. 3.
Используйте HTML-код, представленный ниже. Единственное, что нужно сохранить, это атрибуты name и адрес в атрибуте action тега form (иначе WP не поймет, что вы от него хотите).
Листинг 3. PHP-код формы авторизации. Можно использовать в плагине.
// Получаю адрес текущей страницы $current_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; // В перемненную сохраняю HTML-код формы авторизации. Переменную можно вывести тогда, когда потребуется отобразить форму авторизации. $login_form = " <form action="".wp_login_url($current_url)."" id="loginForm" method="post"> <div class="field"> <label for="login">Имя пользователя:</label> </div> <div class="input"> <input type="text" name="log" value=&quo.
ot;rememberme">Запомнить меня</label> </div> <div class="submit"> <input name="submit" type="submit" value="Войти"> </div> <input type="hidden" value="$product_id" name="product_id"> </form> ";
Атрибут action тега form содержит функцию wp_login_url. Она на столько замечательная, что позволяет в качестве атрибута передать адрес, на который пользователя вернет после авторизации. Это может быть адрес данной страницы (как в листинге 3) или URL личного кабинета — решать вам.
На этом пока все. До встречи в следующих видеоуроках.
P.S.: На правах саморекламы. А вы знаете, что я разработал замечательный плагин, позволяющий продавать инфотовары с блога на WordPress?
С уважением, Андрей Морковин.
www.sdelaysite.com
Плагин WordPress Profile Builder для регистрации пользователей на сайте
Установка модуля происходит в штатном режиме – вам необходимо либо найти его самостоятельно в сети, либо же перейти в админ панель; далее во вкладку «Плагины» – «Установить новый» – «Поиск» и добавить в форму «Profile Builder» без кавычек. Заметим, что такой способ является наиболее безопасным и быстрым (в репозитарии WordPress находится более 20,000 плагинов, количество которых постоянно растет, и вероятность получения вируса оттуда – практически нулевая). После инсталляции Profile Builder необходимо запустить и заглянуть в настройки («Параметры» – «Profile Builder»).
Ах да, не забудьте перед переходом заглянуть в «Общие настройки» и посмотрите, установлена ли там галочка напротив «Любой может стать пользователем/зарегистрироваться». Если этого не сделать, то никакие формы регистрации пользователей работать не будут.
Теперь нужно добавить новую страницу блога (нужна именно страница, а не что-то другое). Собственно на ней ничего не должно быть, кроме шорткода [wpрb-rеgister]. Копировать текст именно отсюда не стоит – он содержит кириллицу, или же в обратном случае форма регистрации красовалась бы и в этом тексте. Собственно этот код и все остальные, вы можете получить на странице опций плагина. Теперь проверьте свой сайт – форма должна была появиться, но отображаться она изначально будет на английском языке, да и подсказок будет слишком много. Как сделать все на русском, мы расскажем чуть позже, а пока обратим взор на форму создания новых пользователей в WordPress.
Для вставки формы необходимо сделать страницу с кодом в любом из виджетов, и особенно хорошо, если у вас их много – будет из чего выбрать. Итак, заходим в «Виджеты», открываем «текстовик» и вбиваем в него шорткод [wpрb-login]. Все после этого авторизация на сайте для пользователей будет доступна. Вставлять ее можно куда-угодно – хоть в подвал, хоть в шапку.
Далее необходимо сделать что-то и с формой регистрации. По дефолту она выводит все необходимые и «не особо» нужные поля, которые вам совершенно ни к чему (например, пункт «О себе»). Тут просто выберете все необходимое, но не лепите ничего лишнего! Чем проще все будет, тем больше юзеров вы получите в конечном итоге (далеко не у каждого есть желание заполнять около десятка пунктов в открывшееся окно).
Подробно рассматривать настройки нет необходимости, ведь там все интуитивно ясно, хоть и представлено все на английском. Собственно, вот и подошли и к этому моменту. Для редактирования перевода необходимо попасть в папку /wp-content/plugins/profile-builder/front-end/, где необходимо искать нужные файлы и переводить их. Так, если необходимо перевести саму форму регистрации, то стоит вносить изменения в файл wppb.register.php, а если нужно корректировать форму авторизации, то «копаться» необходимо в файле wppb.login.php.
Как все сделать – зависит от вашей фантазии. К примеру, вместо стандартного «Вы вошли в систему как», можно прописать в окно «Рады видеть на сайте, мы Вас ждали!». Такой простой ход предоставит возможность сделать ваш сайт более оригинальным и настроить пользователя на положительное времяпровождение.
В админке не забудьте выставить роль нового исполнителя – «Участник». Эта роль используется тогда, когда необходимо предоставить пользователю возможность добавлять свои заметки, но при этом, чтобы он не имел возможности их публиковать. Заниматься публикацией уже будете вы сразу после проверки материала.
Плагин имеет четыре шорткода, которые можно использовать на сайте (при необходимости):
- [wppb-register] – активирует форму добавления нового юзера на вашем сайте;
- [wppb-login] – активирует код формы авторизации, обычно вставляется в сайдбар/окно, но можно поставить куда-угодно на сайт;
- [wppb-edit-profile] – код для вывода формы изменения аккаунта (будет показан только авторизованным юзерам);
- [wppb-recover-password] – код, используемый для восстановления пароля (можно разместить на странице регистрации).
Правда, плагин имеет существенный недостаток – он платен – $40. Но есть и бесплатная версия, правда лишенная новых тем оформления, загрузки аватаров, возможности создания вспомогательных полей на сайт с радиокнопками и т.п.
https://www.youtube.com/watch?v=oa6R_y6TxNo
Альтернативные и сопутствующие плагины WordPress
На наш взгляд Loginza – первый плагин, который необходимо представить из списка дополнительных. Благодаря ему пользователи могут входить на сайт при помощи аккаунтов наиболее популярных порталов и социальных сетей. Неплохое дополнение к вышеописанному плагину WordPress; как раз для тех, кто регистрироваться не хочет, но имеет аккаунт в одной из сетей и хочет быстро залогиниться на сайт. Получить плагин можно по URL, но предупредим, что он не дорабатывался с 2012 года: https://wordpress.org/plugins/loginza/
New User Approve дает возможность владельцу ресурса утвердить пользователя на сайте, прежде чем он сможет пользоваться функционалом. Почти на каждом сайте после заполнения полей регистрации, отправляется код подтверждения или ссылка, по которой необходимо перейти. Этот модуль WordPress добавляет еще один шаг в процессе регистрации пользователей: отправляет запрос администратору, а тот уже будет решать, нужен ли ему новый пользователь на сайт или нет. Письмо с подтверждением или отклонением заявки будет отослано и пользователю (если пользователь получил одобрение на сайт, то в письме будут содержаться данные его учетной записи). Прочитать более подробно и скачать плагин WordPress можно по URL: https://wordpress.org/plugins/new-user-approve/
О плагине Peters Login Redirect можно сказать немного. Его главной целью является перенаправление пользователя после авторизации в нужное место. Проще говоря, можно будет указать, на какую страницу отправится пользователь после авторизации (по дефолту – это главная). Более подробно о плагине WordPress: https://wordpress.org/plugins/peters-login-redirect/
Завершает наш список – Theme Mo Login. Данное решение создает страницу, благодаря которой плагин будет использовать шаблон вашей темы для отображения формы (или окно) входа и регистрации. Есть виджет для боковой панели для входа, что удобно и привычно для многих. Более подробно и получить плагин для Вордпресс можно по URL: http://vkpluss.ru/goto/http://wordpress.org/plugins/theme-my-login/
Похожие статьи
wordpresslib.ru
Основной сайт сети
По умолчанию, WordPress открывает страницу регистрации (wp-signup.php
) на основном домене (сайте) сети. Тем не менее, можно создавать страницы регистрации для каждого сайта сети, даже если у них разные домены и темы.
Мы будем рассматривать случай, когда на всех сайтах сети используется одна тема, но на каждом из них есть страница регистрации. Сайты различаются языком (английский и русский), поэтому страница регистрации будет выводиться на «родном» языке сайта. В случае, если сайты используют разные темы, все будет зависеть от того, какие именно это темы, подойдет ли им одинаковая верстка (отличная ситуация, которая может подтолкнуть вас к унификации всех своих тем) или стоит прорабатывать страницы индивидуально.
Альтернатива functions.php
Файл functions.php
знаком многим пользователям WordPress благодаря событиям и фильтрам, с помощью которых очень просто вносить правки. В нашем случае, с учетом того, что функционал регистрации рассчитан на несколько сайтов, имеет смысл вынести его в MU-плагины.
Что такое MU-плагины?
MU-плагины (Must Use Plugins) загружаются при открытии любого сайта сети. Их нельзя отключить или включить в административной части WordPress, они работают всегда. Стоит отметить, что MU-плагины загружаются раньше обычных плагинов, тем оформления и до полной загрузки ядра WordPress, поэтому вызов некоторых функций может привести к фатальным ошибкам в PHP.
Подобная «ранняя» загрузка имеет и свои плюсы. Скажем, внутри любой темы нельзя цепляться к некоторым событиям из плагинов, которые срабатывают еще до загрузки functions.php
.
В Jetpack, например, есть события вида jetpack_module_loaded_related-posts
(related-posts
— название модуля), с помощью которых можно отслеживать активность модулей. К этому событию невозможно «прицепиться» из functions.php
, потому что оно срабатывает еще до загрузки темы — плагины загружаются раньше тем.
Взглянуть на общую картинку порядка загрузки WordPress и возникновения событий можно на странице Action Reference в Кодексе.
Порядок в файлах
MU-плагины могут содержать любое количество файлов и структуру, которая покажется вам логичной. Я придерживаюсь примерно такой иерархии:
| mu-plugins | | load.php | | selena-network | | | signup | | | | plugin.php | | | ... | | | jetpack | | | | plugin.php
В файле load.php
подключаются переводы и все необходимые «плагины»:
// Загрузка переводов для MU-плагинов load_muplugin_textdomain( 'selena_network', '/selena-network/languages/' ); // Функционал для страницы регистрации require WPMU_PLUGIN_DIR . '/selena-network/signup/plugin.php'; // Еще один плагин // require WPMU_PLUGIN_DIR ...
Внутри директории selena-network
хранятся папки плагинов. В каждой есть свой plugin.php
, которые мы и подключаем в load.php
. Это дает гибкость и возможность мгновенно отключать и включать отдельные компоненты на рабочем проекте в случае экстренной необходимости.
Страница регистрации
Разобравшись с тем, где и как мы будем писать код, можно переходить к созданию страницы регистрации.
Создадим страницу с адресом example.org/signup/
через обычный интерфейс. В качестве адреса можно использовать любой URL, который покажется подходящим для вашего проекта.
Редирект на нужную страницу регистрации
Чтобы WordPress узнал о нашей новой странице регистрации и производил редирект именно на нее, при клике на ссылку «Зарегистрироваться», используется фильтр wp_signup_location
. Его можно найти внутри wp-login.php
и именно он отвечает за редирект на wp-signup.php
по умолчанию.
case 'register' : if ( is_multisite() ) { wp_redirect( apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) ) ); exit; // ...
Как вы помните, по умолчанию, страница регистрации открывается на основном домене сети. Именно поэтому здесь используется network_site_url()
.
Добавим свой обработчик к фильтру в mu-plugins/selena-network/signup/plugin.php
, который будет отдавать адрес страницы регистрации на текущем сайте:
function selena_network_signup_page( $url ) { return home_url( 'signup' ); } add_filter ('wp_signup_location', 'selena_network_signup_page', 99);
selena_network
— префикс, который я использую в именах всех функций внутри MU-плагинов на своем сайте для избежания коллизий, его следует заменить на свой собственный уникальный префикс. Приоритет добавления фильтра 99, потому что некоторые плагины, например, bbPress и BuddyPress могут перезаписать этот адрес на свой собственный (MU-плагины загружаются раньше, чем обычные плагины, см. выше).
Обратите внимание, что используется home_url()
, которая в отличие от network_site_url()
, отдает адрес текущего сайта, а не главного сайта сети.
Функционал wp-signup.php
Файл wp-signup.php
содержит большое количество функций и кода. Чтобы увидеть картину в целом можно воспользоваться сворачиванием кода. Как правило, по-английски это называется «code folding».
В самом начале файла с 1 по 80 строчку (в версии 4.1.1) производятся различные проверки и вывод «старта» страницы с помощью get_header()
.
Далее объявляются множество методов и перед тем, как мы начнем работать с ними, стоит разобраться что делает каждая функция. Внутри многих из них часто используются другие функции с префиксом wpmu_
, все они объявляются в файле wp-includes/ms-functions.php
. Этот раздел тяжело понять не видя код самостоятельно. Ниже небольшое описание основных функций на случай, если у вас возникнут затруднения.
wpmu_signup_stylesheet()
— вывод дополнительного CSS на странице регистрации.show_blog_form()
— поля для регистрации сайта (адрес, название видимость для поисковых систем).validate_blog_form()
— проверка введенного адреса сайта и названия с помощьюwpmu_validate_blog_signup()
.show_user_form()
— поля для регистрации пользователя (логин и адрес эл. почты).validate_user_form()
— проверка введенного логина и адреса эл. почты с помощьюwpmu_validate_user_signup()
.signup_another_blog()
— поля для регистрации новых сайтов с помощьюshow_blog_form()
для пользователей, которые уже зарегистрированы на сайте.validate_another_blog_signup()
— проверяет адрес сайта и название с помощьюvalidate_blog_form()
.signup_user()
— основная функция для вывода полей страницы регистрации.validate_user_signup()
— проверяет логин и адрес эл. почты с помощьюvalidate_user_form()
.signup_blog()
— поля для ввода адреса, названия и видимости сайта (второй шаг регистрации) с помощьюshow_blog_form()
.validate_blog_signup()
— проверяет логин, адрес эл. почты, адрес и название сайта.
В самом низу файла wp-signup.php
(со строчки 646 в версии 4.1.1) основная логика работы страницы регистрации, которая использует все выше описанные методы. Эта часть кода не вынесена в функцию. В конце вызывается get_footer()
.
Копируем функционал wp-signup.php
Далее будет описана процедура копирования wp-signup.php
в MU-плагины и внесению изменений в «форк». Возможно, это может показаться не самым правильным путем. Вместо этого можно с нуля написать свои функции для проверки и вывода форм используя классы, а не обычные функции. На мой взгляд в wp-signup.php
уже есть вся необходимая логика для нашей страницы, остается лишь внести небольшие изменения.
При обновлении WordPress время от времени меняется и wp-signup.php
, но это не значит что при каждом релизе придется синхронизировать свой «форк». Функции внутри wp-signup.php
по сути занимаются лишь выводом HTML, проверкой данных, созданием учетных записей и сайтов занимаются методы с префиксом wpmu_
, объявленные в ms-functions.php
.
Займемся созданием функции, которая будет выводить форму регистрации на странице. Для этого скопируем wp-signup.php из
корня WordPress в mu-plugings/selena-network/signup/
. Подключим его внутри mu-plugins/selena-network/signup/plugin.php
).
require WPMU_PLUGIN_DIR . '/selena-network/signup/wp-signup.php';
Удалим из самого начала скопированного файла все require и ненужные проверки. В версии 4.1.1 это весь код с 1 по 80 строчку.
Теперь мы готовы создать главную функцию для вывода формы регистрации. Для этого всю логику со строчки 646 и до самого конца файла перенесем в функцию c названием selena_network_signup_main
. В самом конце удалим два лишних закрывающих </div>
(строчки 722 и 723), а также вызов get_footer()
.
В только что созданной selena_network_signup_main()
в самом начале объявим глобальную переменную active_signup
, которую используют все остальные методы из этого файла. И добавим вызов события before_signup_form
, которое мы удалили из самого начала файла.
function selena_network_signup_main() { global $active_signup; do_action( 'before_signup_form' ); // ... }
Теперь остается лишь изменить верстку во всех местах где это необходимо и страница регистрации готова.
Для наглядности я опубликовал свою версию измененного wp-signup.php
на Github.
Вывод формы регистрации
Здесь есть как минимум два варианта. Более удобный способ — создать шорткод [network_signup]
и разместить его на странице через обычный редактор.
// Создаем шорткод network_signup add_shortcode( 'network_signup', 'selena_network_signup_main' );
Второй вариант — создать в папке дочерней темы шаблон страницы page-signup.php
. Вместо слова «signup» можно использовать уникальный ID, присвоенный странице. Внутри шаблона добавить необходимую верстку и сделать вызов selena_network_signup_main()
в нужном месте.
В результате моя страница регистрации стала выглядеть намного лучше и чище.
Страница активации
По умолчанию WordPress условно делит процесс регистрации в Multisite на два шага — заполнение формы на сайте и активация аккаунта при переходе по ссылке отправленной в электронном письме. После того, как вы заполните форму, созданную в предыдущем разделе, WordPress отправляет письмо с небольшой инструкцией и ссылкой для активации аккаунта.
За вывод страницы активации отвечает файл wp-activate.php
расположенный в корневой директории WordPress. wp-activate.php
можно так же полностью изменить. Процесс схож с тем, что мы уже делали для wp-signup.php
.
Создадим страницу example.org/activate/
через обычный интерфейс. В качестве адреса используйте любой URL, который покажется вам подходящим.
Скопируем файл wp-activate.php
к себе в MU-плагины и подключим его в mu-plugins/selena-network/signup/plugin.php
.
require WPMU_PLUGIN_DIR . '/selena-network/signup/wp-activate.php';
Внутри не так много содержимого, в отличие от wp-signup.php
. Файл выполняет единственную операцию — активирует аккаунт, если получен верный ключ и выводит сообщение об ошибке или успешном выполнении операции.
Удалим все ненужные проверки и require
— с 1 по 69 строчку в WordPress 4.1.1. В самом конце уберем вызов get_footer()
. Оставшееся содержимое перенесем в функцию selena_network_activate_main()
.
Интересно заметить, что здесь перед загрузкой WordPress (wp-load.php) объявлялась константа WP_INSTALLING
. Ее наличие заставляет WordPress не загружать плагины.
Как и в случае со страницей регистрации остается лишь исправить верстку там, где это необходимо. Также можно изменить текст выводимых сообщений (в этом случае не забудьте добавить текстовый домен своих MU-плагинов во все функции-переводчики, по умолчанию он нигде не установлен).
Готовую функцию можно использовать на заранее созданной странице через шорткод или отдельный шаблон в дочерней теме.
Финальный вариант wp-activate.php на Github.
Письма активации с правильными ссылками
Страница активации готова к работе, но WordPress не знает о ней и по прежнему будет отправлять письма активации со ссылкой на wp-activate.php
. В отличие от wp-signup.php
здесь нет фильтра, который бы позволил изменить адрес. Вместо этого нужно написать свою функцию, которая будет отправлять письма с правильными ссылками.
В момент заполнения и отправки формы на странице регистрации WordPress вызывает wpmu_signup_user()
или wpmu_signup_blog()
в зависимости от типа регистрации. Обе функции создают новую запись в таблице wp_signups
заполняя ее необходимым содержимым, среди которого есть и ключ активации аккаунта.
После, в зависимости от функции, вызывается wpmu_signup_user_notification()
или wpmu_signup_blog_notification()
. Обе функции имеют схожий функционал — генерируют и отправляют письмо со ссылкой активации, но принимают разные аргументы. В обоих есть фильтры для «перехвата» события.
if ( ! apply_filters( 'wpmu_signup_user_notification', $user, $user_email, $key, $meta ) ) return false;
Для активации аккаунтов с созданием блога:
if ( ! apply_filters( 'wpmu_signup_blog_notification', $domain, $path, $title, $user, $user_email, $key, $meta ) ) { return false; }
Остается лишь написать свои обработчики, внутри которых отправлять письма через wp_mail()
, а в самом конце обязательно отдавать false
, чтобы WordPress не отправил письмо активации дважды — одно ваше, другое — письмо по умолчанию со ссылкой на wp-activate.php
.
function selena_network_wpmu_signup_user_notification( $user, $user_email, $key, $meta = array() ) { // Генерируем заголовок, текст и заголовки письма // ... // Отправляем письмо или добавляем Cron-задачу для отправки письма wp_mail( $user_email, wp_specialchars_decode( $subject ), $message, $message_headers ); // Отдаем false, чтобы WordPress не отправил письмо активации дважды return false; } add_filter( 'wpmu_signup_user_notification', 'selena_network_wpmu_signup_user_notification', 10, 4 );
Если вы отправляете письма через SMTP-сервер или количество регистраций очень велико, следует задуматься о том, чтобы не отправлять письма мгновенно. Вместо этого можно добавлять Cron-задачи с помощью WordPress Cron.
Закрываем доступ к wp-signup.php и wp-activate.php
Создав свои собственные страницы регистрации и активации, может потребоваться закрыть «оригиналы». Например, если на странице регистрации есть дополнительные поля, которые необходимо обязательно заполнить. Также многие WordPress сайты подвергаются спам-регистрациям.
Решить две проблемы одним действием можно попросив Apache отдавать 404 в случае попытки открытия этих страниц. Для этого нужно лишь прописать пару дополнительных RewriteRule
в ваш файл-конфигурацию или .htaccess
.
RewriteEngine On RewriteBase / # Знание регулярных выражений никогда не будет лишним :) RewriteRule ^wp-signup.php - [R=404,L] RewriteRule ^wp-activate.php - [R=404,L] # BEGIN WordPress # Правила от WordPress по умолчанию не трогаем :) # ... # END WordPress
Заключение
Для этой и многих других «проблем» связанных с WordPress в интернете есть множество решений. Например, для создания страниц регистрации и активации некоторые предлагают переписывать оригинальные wp-signup.php
и wp-activate.php
. Этого не стоит делать, потому что в случае обновления WordPress вы потеряете все изменения, внесенные в файлы, а также не сможете, проверить целостность ядра с помощью WP-CLI.
При разработке любого дополнения, темы или решения следует потратить немного времени на то, чтобы разобраться с тем, что происходит внутри WordPress. Для этого есть множество полезных дебаг-инструментов.
P.S.
Для автоматического назначения разных ролей новым пользователям можно использовать плагин Multisite User Management.
Если у вас возникли вопросы или трудности во время создания страниц регистрации и активации после прочтения статьи, оставьте комментарий и мы обязательно ответим.
wpmag.ru
Как включить пользовательскую регистрацию в WordPress
Чтобы включить регистрацию пользователей просто перейдите в раздел «Настройки» => «Общие» и прокрутите вниз к пункту «Членство». Установите галочку рядом с пунктом «Любой может зарегистрироваться».
Далее вам необходимо выбрать роль пользователя по умолчанию.
Роль – это своего рода профиль, в котором указаны права пользователя, т.е. что ему разрешается делать на сайте.
В графе «Роль пользователя по умолчанию» задана «Подписчик». Всего доступно пять профилей:
— Подписчик
— Участник
— Автор
— Редактор
— Администратор
После этого необходимо нажать на кнопку «Сохранить изменения», чтобы сохранить настройки.
Теперь, все кто пожелает, могут зарегистрироваться на вашем WordPress сайте.
Добавление ссылки входа в учетную запись WordPress
После того, как вы сделали на своем сайте WordPress регистрацию для пользователей, следующее, что вам необходимо сделать – это дать возможность пользователям зарегистрироваться и войти в свою учетную запись на вашем сайте.
Вам нужно добавить ссылку на страницу авторизации в системе и регистрационную страницу.
Это можно сделать двумя способами:
- Добавить специальный виджет в сайдбар
- Создать свою страницу входа в учетную запись
Добавление виджета в сайдбар
Самый простой способ добавить ссылку авторизации – это добавить Мета-виджет на боковую панель.
Для этого нужно:
- 1.Перейти на административной панели в пункт меню «Внешний вид» => «Виджеты».
- 2.Перетянуть виджет с названием «Мета» в сайдбар.
- 3.У вас на боковой панели появиться виджет с ссылкой входа в учетную запись:
- 4.Далее, по необходимости, вам нужно будет поправить оформление блока при помощи стилей CSS.
- 5.При нажатии на ссылку «Войти» пользователь будет перенаправлен на стандартную страницу авторизации WordPress.
Добавляем стили для виджета
Как вы видели на скриншоте далеко не каждая тема имеет набор стилей для этого виджета, поэтому если вы хотите как то стилизовать этот виджет, то вам прийдётся дописать несколько css свойств в файл Style.css вашейт темы.
Напоминаю,что данный код нужно добавлять в самом конце данного файла!
А вот и сам код с комментариями в тех строках, где можно поменять цвет, размер и т.д.
Вот что у меня получилось в итоге:
Создание своей страницы авторизации
Так как стандартная страница входа в учетную запись имеет специфический внешний вид, то вам скорее всего захочется сделать свою страницу авторизации и регистрации для сайта. Для решения этой задачи, лучше всего воспользоваться специализированным плагином из репозитория WordPress.
В следующей статье я сделаю для вас инструкцию по созданию страницы авторизации при помощи одного из таких плагинов. Поэтому не забудьте подписаться на обновления блога чтобы ничего не пропустить.
Защита сайта от регистрации ботов
В интернете существуют вредоносные спам-боты, которые ищут WordPress сайты с открытой регистрацией. Они могут добавлять спам-аккаунты в ваш сайт, что может угрожать его безопасности и повлиять на уровень доверия поисковых систем.
Для защиты от регистрации ботов вам необходимо:
- 1.Установить из репозитория wordpress плагин Stop Spammers и активировать его.
- 2.В административной части сайта находим пункт меню «Stop Spammers» => «Allow Lists» и добавляем свой IP-адрес в белый список.
- 3.На начальном этапе все остальные настройки можете оставить по умолчанию.
Stop Spammers является очень мощным плагином с огромным количество опций для борьбы с регистрацией ботов. В одной из следующих статей мы рассмотрим более подробно этот плагин.
Как управлять пользователями в WordPress
Вы можете просматривать всех пользователей, которые зарегистрированы на вашем сайте, перейдя в раздел «Пользователи» в админке WordPress. Здесь вам доступен к просмотру список всех зарегистрированных пользователей, их имена, роли и адреса электронной почты.
Вы можете совершать следующие операции с пользователями:
- Удалять или добавлять пользователей
- Редактировать их профиль
- Менять пароль для входа на сайт
- Изменять роль пользователя и т.д.
Это дает вам полный контроль над правами пользователей на вашем WordPress сайте.
Вот и все, как видите ничего сложного.
Я надеюсь, что данная статья хоть немного помогла вам узнать, как сделать регистрацию пользователей на вашем WordPress сайте. В ближайшее время постараюсь написать статью о том, как редактировать права пользователей в WordPress.
Если вам понравилась эта статья – пишите комментарии, поделитесь статьей в социальных сетях и подпишитесь на мою рассылку, а так же не забывайте заходить на мой YouTube — канал с видео-уроками по созданию сайтов на WordPress.
С уважением Юлия Гусарь
impuls-web.ru
Register Plus Redux — плагин регистрации для WordPress, его описание и настройка
Несмотря на то, что Register Plus Redux на русском (за исключением некоторых моментов в настройках) и разобраться в нем не составит особого труда, я все же опишу его работу и помогу вам с настройками.
Пока не забыл, скачать Register Plus Redux можно по этой ссылке.
После установки и активации плагина, форма регистрации заметно преобразится в соответствии с его установками и выбранными полями.
На WordPress-book.ru для регистрации необходимо ввести свое имя, адрес Email, URL сайта и придумать пароль для входа в свой профиль. Все обязательные поля помечены звездочкой. Кроме этого, на указанный адрес электронной почты придет письмо со ссылкой для подтверждения Email и завершения процедуры регистрации. Рассмотрим все функции по порядку в процессе настройки плагина.
Настройка Register Plus Redux
После установки и активации плагина, для перехода в его настройки кликните по ссылке «Register Plus Redux» в нижней левой части панели администратора вашего сайта.
- Впишите в это поле полный путь к логотипу сайта. Я этого делать не стал по причине отсутствия этого самого логотипа.
- Советую активировать опцию подтверждения адреса Email. В поле ниже отредактируйте текст уведомление пользователю о необходимости подтверждения истинности адреса Email в отправленном письме с кодом. После заполнения всех полей при регистрации и нажатия кнопки «OK», плагин перенаправит пользователя на новую страницу с этим уведомлением.
- Проверку администратором советую не включать. Посетитель после регистрации сразу захочет войти в свой профиль а не ждать, когда это разрешит администратор, который может оказаться в длительном загуле или ему будет просто лень :-).
- Задайте период действия кода активации в днях или вообще отключите этот процесс вводом нуля.
- В поле «Registration Redirect«, при необходимости, впишите URL адрес новой страницы перенаправления пользователя после регистрации вместо URL по умолчанию.
- Активация опции «Autologin user» авторизует пользователя автоматически, сразу после регистрации. Работает только с выключенной опцией подтверждения адреса электронной почты.
Регистрационная форма
- Тут нам предлагается облегчить жизнь посетителя и разрешить ему в качестве логина использовать свой адрес Email.
- Я не стал активировать опцию «Требовать у пользователя вводить email дважды» чтобы не затруднять людей лишней писаниной. Хотя, эта функция поспособствовала бы отсечению некоторой части спам-регистраций.
- Проставьте галочки у тех пунктов, поля которых должны быть в форме и какие из них обязательные к заполнению.
- Настройте генерацию пароля пользователя.
Опция «Do not require users to confirm password» отменит необходимость ввода пароля дважды при заполнении формы.
- Мало кому пригодится активация этих опций, только если ваш сайт имеет реферальную программу или оказывает услуги с юридическим сопровождением.
- Используйте стиль формы по умолчанию, если он вас устроит. Стиль обязательных полей также можно оставить как есть или изменить по своим предпочтениям.
- Добавьте звездочку у всех обязательных к заполнению полей формы.
- Опция «Использовать Tabindex» изменяет последовательность перехода по полям и ссылкам при нажатии клавиши «Tab» на клавиатуре. Если вам это не интересно, удалите все tabindex вводом нуля.
Дополнительные поля
Можно добавить дополнительные поля в форму регистрации, вписав свои шорткоды через запятую.
Настройки сообщения новому пользователю
Если не ставить галочку у опции «Не отправлять письмо пользователю после регистрации«, то каждый новый зарегистрированный посетитель будет получать уведомление об успешном завершении регистрации.
Если активирована функция подтверждения email, то тут можно отредактировать текст сообщения, которое получит пользователь для подтверждения электронного адреса своей почты.
Чуть ниже, под настройками сообщений, можно посмотреть как будут выглядеть эти уведомления.
Настройка уведомлений администратора
Тут все еще проще, активируйте нужные вам опции.
Активация «Send administrator an email after a new user is verified» включит отправку админу уведомления об успешной верификации нового пользователя.
Стили CSS страницы регистрации и входа
Если вам не нравится стандартное оформление страниц регистрации и входа, можете изменить их тут, добавив свои стили.
Не забудьте сохранить выполненные изменения.
Надеюсь, вы останетесь довольны работой плагина регистрации на вашем WordPress сайте. Будут вопросы, задавайте в комментариях.
wordpress-book.ru
1. UserPro
Очень хороший плагин и один из самых дорогих. Лицензию на него можно приобрести за $29.
Особенности плагина:
- Возможность авторизации одним кликом через аккаунт соцсетей;
- привлекательные пользовательские профили;
- множество полей с настройками;
- возможность настроить ограниченный доступ.
2. Custom Login & Access
Плагин два в одном, который вы можете приобрести за $20. Он позволяет создавать привлекательные регистрационные формы и блокировать доступ к контенту.
Особенности плагина:
- Возможность блокировки или ограничения доступа сразу ко всему контенту или к его отдельным частям;
- использование капчи при входе, замене пароля и в других случаях;
- ограничение доступа к консоли администратора в зависимости от ролей пользователей;
- система редиректа при входе и выходе.
3. Modal Login Register
Простенький плагин, имеющий красивый дизайн и настройки для разных форм: регистрации, входа, восстановления пароля и др. Лицензия на него стоит $15.
Особенности плагина:
- Редирект при входе на определённый URL-адрес;
- настройка стиля и цвета форм;
- виджет для формы входа.
4. Custom Login Page
Плагин за $17, позволяющий легко настраивать форму входа.
Особенности плагина:
- Отзывчивые шаблоны;
- интеграция бесплатных тем;
- возможность добавления настраиваемого логотипа.
5. Captcha Plus
Относительно дешёвый плагин, стоимостью всего $15, заточенный на безопасность. Встроенный фильтр убережёт ваш сайт от всевозможных ботов и хакеров.
Поля формы имеют дополнительное окно, в котором авторизующийся пользователь должен произвести несложное арифметическое действие и ввести полученный результат.
6. Layered Popups
Плагин работает в связке с Login Box, представленным ниже, который используется в качестве дополнения. Такая связка обеспечивает широкий функционал для всплывающих форм.
Особенности плагина:
- Появление всплывающих форм при различных действиях – загрузке, клике, прокрутке, выходе, режиме простоя;
- 150 шаблонов;
- формы для различных систем маркетинга.
7. Login Box
Как уже сказано выше, данный плагин работает в качестве расширения для Layered Popups. Стоит он всего $7, в то время как цена основного плагина составляет $22.
8. 5sec Google Authenticator
Плагин позволяет обезопасить процесс авторизации с помощью нового поля, в которое пользователь должен ввести код подтверждения. Заплатить за него вам придётся $18.
Особенности плагина:
- Наличие кода подтверждения;
- пользовательские настройки входа;
- защита от хакерских атак и блокировка нежелательных адресов.
9. Master Modal LogIn PopUp
Мощный плагин с широкими возможностями, за который придётся выложить $19.
Особенности плагина:
- Наличие различных шаблонов;
- редирект при входе;
- авторизация через аккаунты Facebook и Google;
- защита от хакерских атак.
10. Loginstyle
Этот плагин оправдывает своё название. Всего за $19 вы получите замечательные стильные формы.
Особенности плагина:
- Гибкие настройки стиля;
- 600+ шрифтов Google;
- добавление фона к видео;
- настраиваемый пользовательский логотип.
11. reCAPTCHA Addon
Этот аддон используется в качестве расширения для Smart Security Tools. Как можно понять из названия, аддон добавляет рекапчу в формы регистрации. Стоит он $15.
12. Modal Login
Плагин обладает мощным функционалом, позволяющим задать стиль модального окна с формой регистрации. За лицензию вам придётся заплатить $15.
Особенности плагина:
- Наличие фонового изображения;
- возможность настраивать прозрачность;
- редирект пользователя при входе.
13. Login Limit Addon
Это также аддон для Smart Security Tools. Оправдывая своё название, он ограничивает число неудавшихся попыток входа заданным значением. Цена – $15.
Особенности плагина:
- Блокировка по имени пользователя;
- ограничение числа попыток входа;
- другие различные ограничения при входе.
14. WordPress Login Themes
Плагин позволяет улучшить встроенную систему авторизации WordPress. Используя его, можно настроить цвет для формы и для фона, добиваясь соответствия формы дизайну сайта. За лицензию придётся заплатить $14.
15. WP Login Plus
Поддерживает дополнительные функции для различных форм. Заплатить вам придётся $10.
Особенности плагина:
- Возможность убрать функцию запоминания пользователя;
- возможность убрать функцию восстановления пароля;
- возможность авторизации по идентификатору пользователя;
- использование сообщений.
16. PopForms
Позволяет использовать всплывающие формы, оформленные в стиле Material Design. Поддерживает настраиваемое модальное окно с формами входа, восстановления пароля и обращения к администратору. Цена лицензии – $18.
17. Grid Locker
Плагин служит для дополнительной защиты форм. Его работа похожа на работу Android Swipe. При авторизации используется система графических элементов с уникальным рисунком, что значительно облегчает работу с формами со смартфона или тачпада. Стоит плагин всего $7.
18. Frontend User Pro
За $21 плагин предоставляет мощный функционал для настройки членской подписки.
Особенности плагина:
- Удобная система подписки членов;
- редактирование профилей из фронтенда;
- менеджер ролей участников;
- настраиваемые формы для входа и подписки.
19. Simple Registration Form
Плагин поддерживает управление пользовательскими профилями. Лицензия на него стоит $24.
Особенности плагина:
- Редирект пользователя при входе;
- автоматическая авторизация;
- настройка ограничений для отдельного контента;
- авторизация из аккаунта Facebook.
20. Profile Builder
Позволяет заменить встроенные формы для входа и восстановления пароля. Поддерживает управление профилями участников из фронтенда. Стоит $16.
Особенности плагина:
- Визуальный конструктор форм;
- настраиваемый редирект пользователей;
- поддержка WPML;
- возможность скрыть панель администратора.
21. User Signup for Arforms
Это также всего лишь дополнение для плагина WordPress Form Builder. За $14 вы получите мощный конструктор форм для регистрации участников.
Особенности плагина:
- Управление профилями из фронтенда;
- интеграция формы входа и выхода;
- поддержка BuddyPress.
Вместо послесловия
Мы закончили обзор плагинов, позволяющих расширить функциональность формы авторизации пользователей. Может быть, у вас уже имеется опыт работы с подобными плагинами. Напишите об этом в комментариях.
clubwp.ru