Question

J'ai des rôles personnalisés dans ma configuration et je veux être en mesure de changer automatiquement le rôle d'un utilisateur à travers une fonction. Dites l'utilisateur A a un rôle de ABONNE, comment puis-je changer la rédactrice en chef? Lors de l'ajout d'un rôle que nous venons:

add_role( $role_name , $role_display_name , array( 'read' =>  true,
                                                   'edit_posts' => false,
                                                   'delete_posts' => false, ));

Comment de changer un rôle? Y at-il quelque chose comme:

change_role($old_role, $new_role);

Mise à jour: Je pense que celui-ci fera:

$wp_user_object = new WP_User($current_user->ID);
$wp_user_object->set_role('editor');
Était-ce utile?

La solution

Voir la WP_User classe , vous pouvez l'utiliser pour ajouter et supprimer des rôles pour un utilisateur.

EDIT:. Je devrais avoir fourni plus d'informations avec cette réponse initiale, donc je suis d'ajouter plus d'informations ci-dessous

Plus précisément, le rôle d'un utilisateur peut être défini en créant une instance de la classe WP_user et appeler les méthodes de add_role() ou remove_role().

Exemple

Modifier un rôle d'abonnés à l'éditeur

// NOTE: Of course change 3 to the appropriate user ID
$u = new WP_User( 3 );

// Remove role
$u->remove_role( 'subscriber' );

// Add role
$u->add_role( 'editor' );

Il faut espérer que est plus utile que ma réponse initiale, qui était pas nécessairement utile.

Autres conseils

Il suffit de noter qu'il ya un moyen plus simple de changer le rôle de l'utilisateur qui est particulièrement utile lorsque vous ne connaissez pas le rôle actuel de l'utilisateur: ->set_role()

Exemple:

// Fetch the WP_User object of our user.
$u = new WP_User( 3 );

// Replace the current role with 'editor' role
$u->set_role( 'editor' );

Pour extrapoler sur la réponse de t31os vous pouvez taper quelque chose comme ceci dans votre fichier fonctions si vous voulez faire en fonction programme sur une condition

$blogusers = get_users($blogID.'&role=student');

foreach ($blogusers as $user) {

    $thisYear = date('Y-7');
    $gradYear = date(get_the_author_meta( 'graduation_year', $user->ID ).'-7');

    if($gradYear < $thisYear) {
        $u = new WP_User( $user->ID );
        // Remove role
        $u->remove_role( 'student' );

        // Add role
        $u->add_role( 'adult' );
    }
}

Vous pouvez modifier le rôle de tout utilisateur en modifiant le profil de l'utilisateur. Pas besoin d'ajouter plus de code lorsque cette option est déjà intégrée dans WordPress.

entrer image description ici

ou

Vous pouvez utiliser le code pour changer tous les utilisateurs actuels avec le rôle de l'abonné à l'éditeur:

$current_user = wp_get_current_user();

// Remove role
$current_user->remove_role( 'subscriber' );

// Add role
$current_user->add_role( 'editor' );

Il y a une fonction de WordPress pour ça!

Je pense qu'il est préférable d'utiliser des fonctions WordPress, si et quand ils sont disponibles.

Vous pouvez utiliser la wp_insert_user () fonction , où l'un des arguments que vous aurez besoin de fournir est le userdata $ [ « rôle »]. Dans cet argument, vous pouvez spécifier le rôle que vous voulez changer l'utilisateur dans.

vous devez inclure le /wp-includes/registration.php, si vous utilisez le code comme un script autonome. Cordialement Uwe

Vous pouvez utiliser wp_update_user . Votre code qui devraient être comme ceci:

<?php
    $user_id = 3;
    $new_role = 'editor';

    $result = wp_update_user(array('ID'=>$user_id, 'role'=>$new_role));

    if ( is_wp_error( $result ) ) {
        // There was an error, probably that user doesn't exist.
    } else {
        // Success!
    }
?>
<?php
$wuser_ID = get_current_user_id();
if ($wuser_ID)
    {
      // NOTE: Of course change 3 to the appropriate user ID
      $u = new WP_User( $wuser_ID );

      // Remove role
      $u->remove_role( 'subscriber' );

      // Add role
      $u->add_role( 'contributor' );
    }
?>

Je sais que très ancien poste, mais j'ai trouvé que les rôles pour les utilisateurs sont stockés dans le tableau de wp_usermeta avec wp_capabilities clé dans la colonne meta_key.

Si vous voulez modifier le rôle d'utilisateur que vous pouvez le faire par cette fonction simple.

function change_role($id, $new_role){
    GLOBAL $table_prefix;
    if(is_array($new_role)){
        $new_role_array = $new_role;
    }else{
        $new_role_array = array( $new_role => true );
    }
    return update_user_meta($id, $table_prefix.'capabilities', $new_role_array);
}

Il y a deux façons d'utiliser cette fonction.

Si vous voulez modifier le rôle d'un rôle unique.

change_role(2, 'editor'); // editor is the new role

Ou si vous voulez ajouter des rôles multiples à l'utilisateur, utilisez les rôles sous forme de tableau dans le second paramètre.

$roles_array = array('editor' => true, 'administrator' => true); // roles array
change_role(2, $roles_array);

Bonne chance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top