web-dev-qa-db-fra.com

Comment définir par programme le rôle par défaut pour les nouveaux utilisateurs?

Je voudrais que les nouveaux utilisateurs du blog aient un rôle personnalisé, plutôt qu'Abonné. Comment définir cela par programmation? Je sais que cela peut être changé depuis le backend.

8
jayarjo

Cela permet aux plugins de pirater facilement le rôle par défaut lorsqu'ils sont actifs.

// Hijack the option, the role will follow!
add_filter('pre_option_default_role', function($default_role){
    // You can also add conditional tags here and return whatever
    return 'subscriber'; // This is changed
    return $default_role; // This allows default
});

Je l'utilise pour m'assurer que certains plug-ins qui ont besoin de rôles d'abonné l'obtiennent indépendamment des tentatives de modification de l'administrateur :)

Cordialement .

11
EarnestoDev

Lorsqu'un nouvel utilisateur est créé via la fonction wp_insert_user() , le rôle est défini avec la méthode set_role() de la classe User et défini sur le rôle d'utilisateur par défaut.

Le rôle d'utilisateur par défaut est extrait de la base de données get_option('default_role') et peut être défini via le tableau de bord de l'administrateur en accédant à Paramètres> Général> Nouveau rôle par défaut de l'utilisateur.

Si vous avez enregistré votre nouveau rôle (à l’aide de add_role() , il devrait être disponible à cet emplacement.

Pour plus de contrôle, vous pouvez également associer les actions user_register ou profile_update à set_role de manière conditionnelle, ou de toute autre manière.

7
soulseekah

Après avoir créé l'utilisateur à l'aide de

$user_id = wp_create_user( $user_login, $pas1, $user_email );

Créer l'objet utilisateur

$user = new WP_User($user_id);

Puis définissez le rôle

$user->set_role('editor');

Vous pouvez remplacer le rôle 'éditeur' par l'un des éléments suivants:

  • Administrateur

  • Éditeur

  • Auteur

  • Donateur

  • Abonné

2
Delphi Electronice

Mettez-le dans le plugin ou functions.php de votre thème

//Make 'Client' a default role

update_option('default_role','client');
1
user80490