Cómo gestionar usuarios en Wordpress por código
Creación de usuarios
Antes de nada, debemos saber donde se encuentra en nuestra base de datos los registros de nuestros usuarios.
Podemos observar que la tabla donde se almacenan estos datos se denomina wp_users en caso de que hayamos dejado el prefijo por defecto en la instalación (Esta práctica no es recomendable y se aconseja personalizar nuestro prefijo por cuestiones de seguridad).
Si observamos la tabla podemos ver que se compone de diferentes campos:
Ahora que conocemos mejor la estructuración de datos que realiza Worpress sobre los usuarios podemos entender mejor la función para su registro: wp_insert_user
wp_insert_user
wp_insert_user( $userdata );
Descripción:
Inserta un usuario en la base de datos
Link:
Ejemplo:
En este ejemplo vamos a suponer que recibimos una serie de parámetros a través de un formulario de registro.
$userdata = array( 'first_name' => $first_name,
'last_name' => $last_name,
'user_login' => $email,
'user_email' => $email,
'user_pass' => $password, );
$user_id = wp_insert_user($userdata);
if(is_wp_error($user_id)){
$errorMessage = $user_id->get_error_message();
echo $errorMessage;
}else {
//Haz algo
}
Creación de metadatas
En algunas ocasiones nos podemos encontrar en la situación de asociar algunos campos extras a un usuario determinado. Para ello haremos uso de los metas de usuario.
La información de los metas la podemos encontrar en la tabla wp_usermeta que cuenta por defecto con diferentes valores:
Siguiendo con el ejemplo anterior, vamos a suponer que recibe un nuevo parametro desde un formulario, en este caso, vamos a barajar que el usuario ha introducido su genero, y queremos asociarlo a su registro en caso de que no se hayan producido errores. Para ello usaremos add_user_meta
add_user_meta
add_user_meta( $user_id, $meta_key, $meta_value, $unique );
Descripción:
Añade metadatas a un usuario especificado
Link:
Ejemplo:
Siguiendo con el ejemplo anterior, vamos a suponer que recibe un nuevo parámetro desde un formulario, en este caso, vamos a barajar que el usuario ha introducido su genero, y queremos asociarlo a su registro en caso de que no se hayan producido errores. Para ello usaremos add_user_meta:
$userdata = array( 'first_name' => $first_name,
'last_name' => $last_name,
'user_login' => $email,
'user_email' => $email,
'user_pass' => $password, );
$user_id = wp_insert_user($userdata);
if(is_wp_error($user_id)){
$errorMessage = $user_id->get_error_message();
echo $errorMessage;
}else{
add_user_meta( $user_id, 'gender', $gender);
}
Edición de usuarios
Una situación muy normalizada, es que el usuario pueda editar sus datos personales como su nombre, apellidos...Para ello la función a utilizar será wp_update_user
wp_update_user
wp_update_user( $userdata );
Descripción:
Actualiza los campos de un usuario especificado en la base de datos
Link:
Ejemplo:
Para poder editar un usuario necesitaremos su ID, este campo lo podemos obtener a través de una variable global que nos proporciona Wordpress y por la cual obtenemos el usuario que esta logeado actualmente
$current_user = wp_get_current_user();
$userNewData = array( 'ID' => $current_user->ID,
'first_name' => $first_name,
'last_name' => $last_name,
'display_name' => $firstName.' '.$lastName );
wp_update_user($userNewData);
Edición de metadatas
Al igual que nos ocurre con los datos de usuario, podremos encontrarnos con la necesidad de editar aquellos campos personalizados que hemos añadido.
Para editarnos nos valdremos de la funciónupdate_user_meta
update_user_meta
update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );
Descripción:
Actualiza un campo metadata asociado a un usuario especificado
Link:
Ejemplo:
$current_user = wp_get_current_user();
update_user_meta($current_user->ID,'gender',$gender);
Obtener los datos de usuario
Otra situación muy recurrente es la obtención de datos del actual usuario logueado. Para ello podemos hacer uso del método wp_get_current_user().
wp_get_current_user()
wp_get_current_user();
Descripción:
Devuelve el usuario actual
Link:
Ejemplo:
Para obtener los datos del usuario actual será tan sencillo como hacer lo siguiente:
$current_user = wp_get_current_user();
$current_user->display_name;
Obtener los metadatas
Para obtener los metadatas de un usuario en concreto simplemente necesitamos su ID y el nombre del metadata que queramos obtener
get_user_meta
get_user_meta($user_id, $key, $single);
Descripción:
Actualiza un campo metadata asociado a un usuario especificado
Link:
Ejemplo:
$current_user = wp_get_current_user();
get_user_meta($current_user->ID,'gender',true);
Eliminación de usuarios
Otra práctica común es la necesidad de eliminar algún usuario específico. Para ello usaremos el método wp_delete_user
wp_delete_user
wp_delete_user($user_id, $user_ reassign);
Descripción:
Elimina a un usuario especificado por su id, además puede recibir un parámetro opcional para reasignar los post y links a otro usuario.
Link:
Ejemplo:
$current_user = wp_get_current_user();
wp_delete_user($current_user->ID);
Utilidades
A continuación te dejo otros códigos útiles que puedes necesitar para la gestión de usuarios
Saber si el usuario esta logueado
if (is_user_logged_in()) {
//usuario logueado
}else {
//usuario NO logueado
}
Loguear un usuario (por ejemplo después del registro)
$creds = array();
$creds = array('user_login' => $email, 'user_password' => $password);
$creds['remember'] = true;
$user = wp_signon($creds, false );