Registro de usuarios personalizado en WordPress
Este código recibe valores por POST, comprueba si el nombre de usuario existe con la función username_exists, si el email está registrado con la función email_exists y genera un nuevo usuario de WordPress con los datos recibidos.
Algunas cosas a tener en cuenta:
- En este ejemplo el username es el propio email, por eso en la linea 25 utilizamos el email en la función username_exists.
- Como resultado del proceso devuelve un JSON, ya que está pensado para una llamada AJAX, pero se puede adaptar fácilmente para hacer una redirección o cualquier otro comportamiento.
- Si queremos generar una contraseña para el usuario podemos utilizar la función wp_generate_password
- Si solo queremos insertar un usuario con su contraseña (sin más campos adicionales), podemos utilizar la función wp_create_user
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php header('Response: HTTP/1.1 200 OK'); /* Cargamos el wp-load para poder utilizar las funciones de Wordpress */ define('WP_USE_THEMES', false); require('../../../../wp-load.php'); /* Almacenamos las variables de nuestro formulario */ $user_email = $_POST['email']; $user_name = $_POST['name']; $user_pass = $_POST['pass']; $user_last_name = $_POST['last_name']; $user_city = $_POST['city']; $user_country = $_POST['country']; /* Comprobamos si hay algún usuario registrado con ese correo. En este caso utilizamos como username el email, si van a ser distintos hay que comprobar primero el username y luego el email */ $user_id = username_exists( $user_email ); if ( !$user_id and email_exists($user_email) == false ) { $userdata = array( 'user_login' => $user_email, 'user_email' => $user_email, 'display_name' => $user_name . ' ' . $user_last_name, 'first_name' => $user_name, 'last_name' => $user_last_name, 'user_pass' => $user_pass ); /* Insertamos el usuario */ $user_id = wp_insert_user( $userdata); if( !is_wp_error($user_id) ) { /* Si tenemos que añadir campos extra lo podemos hacer aquí con el id generado. */ add_user_meta( $user_id, 'ciudad', $user_city); add_user_meta( $user_id, 'pais', $user_country); $output = json_encode(array('type'=>'error', 'text' => 'Gracias por registrarte.<br><br>', 'error' => 0)); }else{ $output = json_encode(array('type'=>'error', 'text' => 'Ocurrió un error al registrarte', 'error' => 2)); } } else { $output = json_encode(array('type'=>'error', 'text' => 'Ya existe un usuario registrado con ese email', 'error' => 1)); } echo $output; ?> |