GoPymes's Blog

wp_update_user para cambiar user_login

user

Para un proyecto pasado debía actualizar el user_login de un usuario para un evento en particular, entonces use el conocido wp_update_user con el siguiente código:

1
wp_update_user(array('ID' => $user_id, 'user_login' => $new_user_login));

Donde $user_id es el ID del usuario a cambiar y $new_user_login es el nuevo user_login a actualizar. Sin embargo, el user_login no cambiaba, verifiqué cada paso, todo estaba en orden y yo sólo quedaba frustrado pues no entendía que sucedía.

Así que era el momento de profundizar en el código de WordPress y ver lo que estaba pasando. Una rápida búsqueda en Google revela que wp_update_user se define en wp-includes/registration.php, a partir de ahí resulta que wp_update_user hace un poco de magia, pero se basa en wp_insert_user para actualizar realmente la base de datos.

Esta función es definitivamente más complejo, pero finalmente se identifica mi problema. Cuando wp_insert_user se llama para actualizar un usuario, en lugar de crear un usuario, el campo user_login nunca se actualiza.

Entonces, sólo nos queda usar $wpdb->update

1
$wpdb->update($wpdb->users, array('user_login' => $new_user_login), array('ID' => $user_id));

Y… solucionado!

Leave a Reply

Your email address will not be published. Required fields are marked *