In WordPress è semplice registrare un nuovo utente con AJAX ed effettuare il login automaticamente.
Registriamo prima l'utente con la funzione wp_insert_user() e successivamente effettuiamo il login con l'account appena creato usando la funzione wp_signon().
<?php
function my_register() {
extract( $_POST );
$errors = array();
$output = array();
if( !filter_var( $email, FILTER_VALIDATE_EMAIL ) || email_exists( $email ) ) {
$errors[] = array(
'param' => 'email',
'msg' => __( 'E-mail non valida.', 'textdomain' )
);
}
if( empty( $password ) ) {
$errors[] = array(
'param' => 'password',
'msg' => __( 'Campo richiesto.', 'textdomain' )
);
}
if( count( $errors ) > 0 ) {
$output['errors'] = $errors;
} else {
$user_data = array(
'user_login' => $email,
'user_pass' => $password,
'user_email' => $email,
'role' => 'subscriber'
);
$user_id = wp_insert_user( $user_data );
$creds = array(
'user_login' => $email,
'user_password' => $password,
'remember' => true
);
$user_login = wp_signon( $creds, false );
$output['success'] = true;
}
wp_send_json( $output );
}
add_action( 'wp_ajax_nopriv_my_register', 'my_register' );