I want to remove '@' from a user_meta when users register or update their profile.
Here is my code
add_action('edit_user_profile_update', 'update_extra_profile_fields');
add_action('personal_options_update', 'update_extra_profile_fields');
add_action( 'user_register', 'update_extra_profile_fields');
function update_extra_profile_fields($user_id) {
if (isset($_POST['telegram_id'])) {
$telegram_id = $_POST['telegram_id'];
$telegram_id = str_replace('@', '', $telegram_id);
update_user_meta($user_id, 'telegram_id', $telegram_id);
}
}
So here update_user_meta is not working. It doesn't update the user meta when users register or update their profile from wordpress dashboard but when they update their profile from the frontend page that I've created for my website, it works!
In order to see what the problem is, I changed this line update_user_meta($user_id, 'telegram_id', $telegram_id);
to this: $_POST['telegram_id'] = $telegram_id;
and now it's working (But it's not a good solution). It seems that my function is run before another wordpress function which re updates the user_meta. How should I solve this problem?