web-dev-qa-db-fra.com

Distinguer les ID utilisateur de profil et utilisateur admin/Obtenir l'identifiant de l'utilisateur en cours de modification

Sur la page de profil d'utilisateur de mon site, je souhaite permettre aux utilisateurs de rôle administrateur de pouvoir modifier des champs méta d'utilisateur spécifiques d'utilisateurs de rôle d'abonné.

Comment puis-je distinguer les deux ID utilisateur?.

L'utilisateur actuellement connecté est l'utilisateur admin.

get_current_user(); // returns the admin role user id

mais je dois pouvoir accéder à l'ID d'abonné pour définir les métadonnées

update_user_meta($subscriber_user_id,"name","value");

Comment puis-je renseigner la valeur $subscriber_user_id correctement?

1
emeraldjava

Sur la "page de profil", c'est-à-dire user-edit.php dans le back-end de l'administrateur, l'ID utilisateur du profil en cours de modification est inscrit dans le $user_id global.

Par conséquent:

global $user_id;
update_user_meta( $user_id, 'key', 'value' );

est l’essence de ce que vous recherchez.

Si l'utilisateur actuel est un administrateur doit être vérifié uniquement si vous avez la capacité edit_users attribuée à des rôles autres que les administrateurs, ce qui n'est pas le cas par défaut. .

Si vous souhaitez que les administrateurs ne puissent enregistrer les métadonnées que pour les abonnés, tout en ayant des utilisateurs d'autres rôles, vous devrez évidemment vérifier le rôle des utilisateurs modifiés avant de sauvegarder.

Donc, par souci d'exhaustivité, la même chose avec les deux vérifications en place:

global $current_user, $user_id;

/* user object of user being edited */
$edited_user = new WP_User( $user_id );

/* verify both users roles */
if (
    in_array( 'administrator', $current_user->roles ) &&
    in_array( 'subscriber', $edited_user->roles )
) {
    update_user_meta( $edited_user->ID, 'key', 'value' );
}
3
Johannes Pille