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!
Cuando tienes un website Ecommerce a veces quieres ofrecer ...
Este post será corto y conciso, para crear un plugin de costos ...
No sé si el título se entiende, así que aquí va la ...