WordPress: registrazione di un utente via AJAX con login automatico

WordPress: registrazione di un utente via AJAX con login automatico

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' );

Torna su