WordPress: evitare utenti duplicati con jQuery e AJAX

Con jQuery e AJAX possiamo facilitare il nostro lavoro di registrazione degli utenti di WordPress nel frontend.

Creiamo la seguente action di verifica:


function my_check_user() {
    $username = ( isset( $_POST['user'] ) ) ? trim( $_POST['user'] ) : '';
    $email = ( isset( $_POST['email'] ) ) ? trim( $_POST['email'] ) : '';
    $output = array();
    
    $username_exists = ( $username !== '' ) ? username_exists( $username ) : false;
    $email_exists = ( $email !== '' ) ? email_exists( $email ) : false;

    $output['username'] = $username_exists;
    $output['email'] = $email_exists;
    
    header( 'Content-Type: application/json' );
    echo json_encode( $output );
    exit();
}

add_action( 'wp_ajax_nopriv_my_check_user', 'my_check_user' );

Quindi con jQuery effettuiamo la verifica:


var url = location.protocol + "//" + location.host + "/wp-admin/admin-ajax.php";
var data = {
    action: "my_check_user",
};
$( "#username" ).on( "blur", function() {
  var $input = $( this );
  data.user = $input.val();
  $.when( $.post( url, data ) ).done(function( resp ) {
    if( resp.username ) {
        // Errore
    }

  });
});

$( "#user-email" ).on( "blur", function() {
  var $input = $( this );
  data.email = $input.val();
  $.when( $.post( url, data ) ).done(function( resp ) {
    if( resp.email ) {
        // Errore
    }

  });
});