WordPress: aggiungere un generatore di password ai form di registrazione

WordPress: aggiungere un generatore di password ai form di registrazione

Quando creiamo un form di registrazione in WordPress non sappiamo mai quale password potrebbero scegliere gli utenti. Possiamo aiutare gli utenti fornendo loro un suggerimento sulla password da utilizzare.

In functions.php creiamo una funzione che genererĂ  una password casuale ed una action AJAX pubblica (gli utenti non iscritti non possono aver effettuato il login) che restituirĂ  la stringa generata.


function my_create_password( $length = 16 ) {
    $valid_characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZ+-*#&@!?';
    $valid_char_number = strlen( $valid_characters );
 
    $result = '';
 
    for ( $i = 0; $i < $length; $i++ ) {
        $index = mt_rand( 0, $valid_char_number - 1 );
        $result .= $valid_characters[$index];
    }
 
    return $result;
}

function my_suggest_password() {
	$suggest = $_GET['suggest'];
	$output = '';
	if( $suggest == "1" ) {
		$pwd = my_create_password();
		$output = $pwd;
	}
	echo $output;
	exit();
}

add_action( 'wp_ajax_nopriv_my_suggest_pwd', 'my_suggest_password' );

Quindi definiamo questa struttura nel nostro template di registrazione:


<input type="password" name="user-pwd" id="user-pwd" />
<div>
	<a href="#user-pwd" id="suggest">
	    <?php _e( 'Genera password', 'nometema' ); ?>
	</a>
	<span id="suggestion"></span>
</div>

Infine usiamo jQuery per effettuare la richiesta AJAX:


var $suggestBtn = $( "#suggest" ),
	$suggestion = $( "#suggestion" ),
	ajaxURL = "http://" + location.host + "/wp-admin/admin-ajax.php";
	
	$suggestBtn.click(function( e ) {
		e.preventDefault();
		var data = {
			action: "my_suggest_pwd",
			suggest: "1"
		};
		
		$.get( ajaxURL, data, function( text ) {
			$suggestion.text( text );
		});
	});

Torna su