Можно ли удалить поле имени пользователя со страницы регистрации?
Я хочу, чтобы пользователи вводили только свои адрес электронной почты и пароль.
Новый пользователь должен быть создан только на основе этих двух параметров.
Это возможно и если да, то как?
user-registration
phpnwordpress
источник
источник
Ответы:
Абсолютно ДА , вы можете достичь этого.
Правило 1: WordPress требует имя пользователя. Мы должны предоставить имя пользователя.
Правило 2. Не редактируйте код ядра WordPress.
Мы можем добиться этого, скрыв поле имени пользователя, получить электронную почту и сохранить его как имя пользователя.
Шаг 1: Удалить текстовое поле Имя пользователя
Шаг 2: Удалить ошибку имени пользователя
Шаг 3: Управление функцией фоновой регистрации.
Поместите приведенный выше код в файл functions.php вашей темы .
Вы также можете скачать полный плагин для достижения этой цели.
Плагин: https://wordpress.org/plugins/smart-wp-login/
источник
Шаг 3 в посте Nishant Kumars отправляет проверки, если
isset($_POST['user_login'])
это не сработало для меня, поскольку логин - это то, что мы на самом деле хотим удалить.Мое решение заключается в следующем (в файле functions.php темы), а также в качестве отдельной функции, чтобы остаться в стиле кода WordPress:
источник
@
и.
в адресе электронной почты имя пользователя:$_POST['user_login'] = str_replace(array('@', '.'), '_', $_POST['user_email']);
@Nishant Кумар дал идеальный и должен быть принят ответ на этот вопрос. Однако после выхода версии для Wordpress 4.0 возникает сбой. Из кодекса -
registration_errors
Фильтр здесь требует небольшой модификации.Примечание. Как уже упоминалось в @mcnesium, если мы полностью избавились от поля имени пользователя (в моем случае я использовал плагин Theme для входа в систему, чтобы переопределить обычную форму регистрации, и там я просто удалил поле имени пользователя), тогда
$_POST['user_login']
будетnull
и условие не будет совпадать совсем. Мы лучше удалим это из условия, предложенного @mcnesium.источник
Итерируя ответ @ nishant-kumar, мы видим ванильный JS, не требующий дополнительного js-скрипта, 1 шаг, не нужно редактирование бэкэнда, решение создать форму регистрации только с вводом электронной почты:
Вам просто нужно добавить этот код в ваш файл functions.php (или в ваш собственный плагин , если он у вас есть)
источник
user_email is not defined at HTMLInputElement.syncUserName
. Перемещение части «function syncUserName» внутри верхней функции устраняет ошибку, и фрагмент кода работает очень хорошо. Просто прокомментируйте, чтобы другие могли столкнуться с той же проблемой. Спасибо, Gfra54.user_email
var в ту же область. Благодарю.Я думаю, что любое решение этого запроса будет «взломать», так как WordPress требует, чтобы было имя пользователя для всех зарегистрированных пользователей. Даже упомянутый выше плагин, скорее всего, просто находит имя пользователя по адресу электронной почты, а затем использует это имя для входа на сайт.
Если у вас все в порядке с хаком, вот концепция, которая может сработать:
1) Предварительно заполните поле имени пользователя в вашей регистрационной форме уникальным номером, используя текущую временную метку, - это хорошая идея, чтобы избежать появления дубликатов. Затем вы бы скрыли это поле, чтобы пользователь не видел его на экране при заполнении формы.
Если вы используете jQuery, вы можете использовать что-то вроде:
В этом примере «form input.username» будет селектором jQuery для поиска поля имени пользователя, вам нужно будет проверить структуру html на своей странице, чтобы убедиться, что селектор соответствует структуре.
2) Используйте плагин, подобный тому, который упоминался ранее ( http://wordpress.org/extend/plugins/wp-email-login/ ), чтобы позволить пользователям войти в систему со своим адресом электронной почты.
источник