Jak přidat pole pro heslo do registračního formuláře bez použití pluginu - Affinite.io CZ

Při registraci do blogu bežícím na redakčním systému WordPress, je nutné nejprve zadat uživatelské jméno a email, náhodně vygenerované heslo nám pak automaticky přijde na zadaný email. Heslo si pak můžeme změnit v profilu uživatele.

Jak postupovat, pokud chceme uživatelům umožnit zadat své heslo již při registraci a vynechat tak mezikrok s nutností kopírování vygenerovaného hesla a jeho změně v nastavení účtu.

Původní formulář vypadá takto:

My budeme chtít přidat dvě pole pro heslo a potvrzení hesla. Do functions.php vložíme následující funkci:

function vm_extra_fields(){
echo '

Password must be long minimum 8 characters.


Please enter the same password.

'; }

Tím jsme vytvořili dvě pole pro heslo a potvrzení hesla, ještě je přidáme do formuláře pomocí add_action a hooku register_form:

add_action( 'register_form', 'vm_extra_fields' );

Výsledek:

Na formuláři je vidět, že jako podmínku jsme si stanovili, že heslo musí být dlouhé minimálně 8 znaků a musíme tedy provést kontrolu:

function vm_check_register_fields($login, $email, $errors) {
  if ( $_POST['password'] !== $_POST['repeat_password'] ) {
  $errors->add( 'passwords_not_matched', "ERROR:
  Passwords must match" );
  }
  if ( strlen( $_POST['password'] ) add( 'password_too_short', "ERROR:
  Passwords must be at least eight characters long" );
  }
}

add_action( 'register_post', 'vm_check_register_fields', 10, 3 );

Určitě jste si také všimli, že se na formuláři již nezobrazuje upozornění, že heslo bude zasláno emailem. To nyní postrádá smysl a proto jej odstraníme. Bohužel se mi nepodařilo přijít na způsob, který by fungoval univerzálně pro jakýkoliv jazyk, proto jsem vytvořil filtr pro angličtinu a češtinu. Při použití jiného jazyka je nutné změnit podmínku:

function vm_edit_password_email_text ( $text ) {
	if ( $text == 'A password will be e-mailed to you.' ) {
		$text = '';
	}
	return $text;
}
add_filter( 'gettext', 'vm_edit_password_email_text' );

Jako poslední krok uložíme zadané heslo do databáze:

function vm_register_extra_fields( $user_id ){
	$userdata = array();

	$userdata['ID'] = $user_id;
	if ( $_POST['password'] !== '' ) {
		$userdata['user_pass'] = $_POST['password'];
	}
	$new_user_id = wp_update_user( $userdata );
}
add_action( 'user_register', 'vm_register_extra_fields', 100 );

Samozřejmě, že by bylo fajn přidat ještě kontrolu třeba pomocí CAPTCHA, ale to není součástí tohoto článku.
V některém z dalších článků popíši způsob, jak vytvořit widget s přihlašovacím formulářem pro umístění do sidebaru.

2 responsivní Woocomerce šablony zdarma
2 responsivní Woocomerce šablony zdarma
17 Dub, 2013
Přidání javascriptu a externího stylu do šablony - správný způsob
Přidání javascriptu a externího stylu do šablony - správný způsob
21 Dub, 2013

Looking for something?