@DeboshiR
Свободу разработчикам!!!

Как создать собственную страницу регистрация без ввода логина?

Имеем простейшую страницу регистрации бзера на WP:
<form id="registerform" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post">
	<p>
		<label for="user_login">
			Имя пользователя<br>
			<input type="text" name="user_login" id="user_login" class="input" value="" size="20" style="">
		</label>
	</p>
	<p>
		<label for="user_email">
			E-mail<br>
			<input type="email" name="user_email" id="user_email" class="input" value="" size="25">
		</label>
	</p>

	<p id="reg_passmail">Подтверждение регистрации будет отправлено на ваш e-mail.</p>

	<br class="clear">
	<input type="hidden" name="redirect_to" value="">

	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Регистрация"></p>
</form>

Собственно как можно удалить поле ввода имени пользоваля и при этом сохранить возможность регистрации? Просто удалить поле из формы не выйдет, т.к. WP будет ругатся на его отсутствие
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Asokr
Прелесть WP в том, что в сети есть ответ практический на каждую хотелку, гуглить нужно на английском...
Я делал вот так:

Шаг-1: Скрываем поле регистрации
add_action('login_head', function(){
?>
    <style>
        #registerform > p:first-child{
            display:none;
        }
    </style>

    <script type="text/javascript" src="<?php echo site_url('/wp-includes/js/jquery/jquery.js'); ?>"></script>
    <script type="text/javascript">
        jQuery(document).ready(function($){
            $('#registerform > p:first-child').css('display', 'none');
        });
    </script>
<?php
});


Шаг-2: Удаляем стандартную ошибку WP
//Remove error for username, only show error for email only.
add_filter('registration_errors', function($wp_error, $sanitized_user_login, $user_email){
    if(isset($wp_error->errors['empty_username'])){
        unset($wp_error->errors['empty_username']);
    }

    if(isset($wp_error->errors['username_exists'])){
        unset($wp_error->errors['username_exists']);
    }
    return $wp_error;
}, 10, 3);


Шаг-3: Вписываем почту юзера вместо логина
add_action('login_form_register', function(){
    if(!isset($_POST['user_login']) && isset($_POST['user_email']) && !empty($_POST['user_email'])){
        $_POST['user_login'] = $_POST['user_email'];
    }
});

Всё это добавляем в functions.php конечно-же.

Источник:
https://wordpress.stackexchange.com/questions/5230...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы