¿Qué hook se dispara cuando se actualiza la información del perfil de usuario?

5 jun 2014, 13:22:12
Vistas: 28.2K
Votos: 7

Estoy buscando el hook que se dispara cuando se actualiza la información de un usuario. Específicamente, quiero actualizar una entrada con el valor de un campo personalizado del perfil (en mi ejemplo info) cada vez que se actualiza el perfil de ese usuario.

Probé el hook profile_update, pero parece que no se dispara:

add_action( 'profile_update', 'add_info_to_post' );
function add_info_to_post( $user_id ) {

        // Obtener el meta info del usuario
        $info = get_user_meta($user_id, 'info', true);

        // Obtener todos los elementos de ese usuario
        $args = array(
                'author' => $user_id,
                'post_type' => 'item',
        );

        $items = get_posts($args);            
        foreach ($items as $item){
            update_post_meta($item->ID, 'user_info', $info);
        }
}

¿Alguna sugerencia para hacer que esto funcione?

EDICIÓN: Tal vez debería mencionar que accedo a las páginas de perfil de los usuarios a través del backend...

2
Comentarios

En tu código el nombre de la función y la función que tienes en el add_action no coinciden.

Nicolai Grossherr Nicolai Grossherr
5 jun 2014 13:25:06

¡Correcto! Corregido

yumba yumba
5 jun 2014 13:26:55
Todas las respuestas a la pregunta 2
0
11

Del Codex: API de Plugins - Referencia de Acciones - profile_update:

Nota: Este hook no se utiliza en las páginas de edición/perfil de usuario. Para enlazar con las páginas de edición de usuario en el administrador, utiliza el hook edit_user_profile_update que se encuentra en /wp-includes/user-edit.php en su lugar.

Del Codex: API de Plugins - Referencia de Acciones - edit_user_profile_update:

Este hook solo se activa cuando un usuario está viendo la página de perfil de otro usuario (no el propio). Si deseas aplicar tu hook a TODAS las páginas de perfil (incluyendo el usuario actual), entonces también necesitas usar el hook personal_options_update.

5 jun 2014 13:31:19
0

Puedes utilizar el hook de acción updated_user_meta. Se activará inmediatamente después de actualizar los metadatos del usuario. Más información sobre el hook

He utilizado este hook para verificar si la foto de perfil del usuario ha sido actualizada. Aquí está el código funcional para mi caso:

/** 
 * Establecer la URL del avatar cuando se actualiza la foto de perfil del usuario
 * 
 * Problema resuelto: necesitaba recargar la página para mostrar 
 * la foto de perfil en la barra lateral, incluso después de agregar/eliminar 
 * la foto de avatar en el formulario de perfil de usuario.
 */
add_action( 'updated_user_meta', 'gem_updated_profile_photo', 10, 4);
function gem_updated_profile_photo( $meta_id, $object_id, $meta_key, $meta_value ){
    if ( $meta_key === 'avater' ) {
        // haz tus operaciones aquí
    }
}
27 jul 2024 20:52:55