L'utilisateur 19 est un WP Admin.
$user = new WP_user( 19 );
$user->add_role( 'custom_role' );
Le code ci-dessus fonctionne et ajoute le rôle custom_role
.
Cependant, lorsque je lance le même code sur le hook personal_options_update
et edit_user_profile_update
, ce n'est pas le cas.
J'ai ajouté une case à cocher à la page de profil de l'utilisateur. La fonction appelée à partir des deux crochets ci-dessus puis ...
if( user_can( $user_id, 'administrator' ) ) {
$user = get_user_by( 'id', $user_id );
if( ! empty( $_POST['my_checkbox'] ) ) {
update_user_meta( $user_id, 'my_checkbox', true );
$user->add_cap( 'one_cap' );
$user->add_cap( 'two_cap' );
$user->add_role( 'custom_role' );
}
}
one_cap
et two_cap
sont tous deux définis correctement pour l'utilisateur, mais aucun signe de custom_role
et rien n'est écrit dans le journal de débogage.
Quelle pourrait en être la cause?
utilisez le hook profile_update et dans la fonction hookée, exécutez cette vérification pour vous assurer que les données précédentes sont également ajoutées au profil des utilisateurs lors de la mise à jour.
if ( $update ){
do_action('profile_update', $user_id, $old_user_data);
}else{
do_action('user_register', $user_id);
}
return $user_id;
Cette réponse peut vous aider à mieux comprendre: WordPress edit_user_profile_update met à jour le rôle secondaire