Je veux suivre quand un certain morceau de méta d'utilisateur est changé dans l'admin, puis effectuer une action. Je pensais avoir trouvé le bon raccord (de https://codex.wordpress.org/Plugin_API/Action_Reference/profile_update ), mais lorsque j'utilise ce code:
add_action( 'profile_update', 'my_profile_update', 10, 2 );
function my_profile_update( $user_id, $old_user_data ) {
error_log(print_r($old_user_data,true));
}
Mon journal des erreurs ne montre pas les méta utilisateur que je modifie, mais uniquement les valeurs de la table wp_users principale et un ensemble de fonctionnalités. Comment puis-je récupérer la valeur user_meta précédemment modifiée (ou détecter une valeur utilisateur_meta modifiée) lorsqu'un profil est enregistré dans l'administrateur?
J'ai compris la réponse. J'avais besoin d'utiliser le filtre insert_user_meta
, pas un crochet d'action. Et puis j’ai AUSSI eu besoin d’une combinaison de get_user_meta
(pour récupérer les anciennes données) et de $_POST
pour obtenir la valeur modifiée. En résumé, voici mon dernier code pour déterminer le moment où un champ user_meta
(créé dans ACF) change d'une valeur à une autre:
add_filter( 'insert_user_meta', function( $meta, $user, $update ) {
if( true !== $update ) return $meta; // if not an update (b/c it is a create) do nothing
if(is_admin()) { // check if we are in admin not front end
$old_meta = get_user_meta( $user->ID );
if( $old_meta['verified_member'][0] !== $_POST['acf']['field_5ad4eecd7564b'] ) {
error_log("verified_member was modified from " . $old_meta['verified_member'][0] . " to " . $_POST['acf']['field_5ad4eecd7564b']);
}}
return $meta;
}, 10, 3 );