Quale hook viene utilizzato quando le informazioni del profilo utente vengono aggiornate?
Sto cercando l'hook che si attiva quando le informazioni di un utente vengono aggiornate. Nello specifico, voglio aggiornare un post con il valore di un campo personalizzato del profilo (nel mio esempio info
) ogni volta che il profilo di quell'utente viene modificato.
Ho provato l'hook profile_update
, ma sembra non attivarsi:
add_action( 'profile_update', 'add_info_to_post' );
function add_info_to_post( $user_id ) {
$info=get_user_meta($user_id,'info',true);
//recupera tutti gli elementi di quell'utente
$args=array(
'author' => $user_id,
'post_type' => 'item',
);
$items=get_posts($args);
foreach ($items as $item){
update_post_meta($item->ID,'user_info',$info);
}
}
Avete suggerimenti su come farlo funzionare?
MODIFICA: Forse dovrei menzionare che accedo alle pagine del profilo degli utenti attraverso il backend..
Dal Codex: Plugin API - Riferimento Azioni - profile_update:
Nota: Questo hook non viene utilizzato nelle pagine di modifica/profilo utente. Per intervenire nelle pagine di modifica utente dell'amministratore, utilizza invece l'hook edit_user_profile_update che si trova in
/wp-includes/user-edit.php
.
Dal Codex: Plugin API - Riferimento Azioni - edit_user_profile_update:
Questo hook viene attivato solo quando un utente visualizza la pagina del profilo di un altro utente (non il proprio). Se vuoi applicare il tuo hook a TUTTE le pagine di profilo (incluso l'utente corrente) allora devi utilizzare anche l'hook personal_options_update.

Puoi utilizzare l'hook di azione updated_user_meta
. Verrà attivato immediatamente dopo l'aggiornamento dei metadati dell'utente. Maggiori informazioni sull'hook
Ho utilizzato questo hook per verificare se la foto del profilo utente è stata aggiornata. Ecco il codice funzionante per il mio caso:
/**
* Imposta l'URL dell'avatar del profilo quando viene aggiornata la foto del profilo utente
*
* Problema risolto: è necessario ricaricare la pagina per visualizzare la
* foto del profilo nella sidebar, anche dopo aver aggiunto/rimosso l'avatar nel modulo del profilo utente.
*/
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' ) {
// fai le tue operazioni qui
}
}
