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:

Captura de pantalla 2020-02-01 a las 13.10.47.png

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:

Ver en WP codex

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:

Ver en WP codex

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:

Ver en WP codex

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:

Ver en WP codex

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:

Ver en WP codex

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:

Ver en WP codex

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:

Ver en WP codex

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