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


10

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

Réponses:


13

Cela permet aux plugins de détourner 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 plugins qui ont besoin de rôles d'abonné l'obtiennent indépendamment des tentatives de modification de l'administrateur :)

Cordialement .


8

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

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

Si vous avez enregistré votre nouveau rôle (en utilisant add_role(), il devrait être disponible à votre choix.

Alternativement, pour plus de contrôle, vous pouvez vous connecter aux actions user_registerou profile_updatepour set_roleles appliquer de manière conditionnelle, ou comme vous le souhaitez.


1
Je marquerai votre réponse comme correcte, bien que la vraie réponse se soit avérée aussi simple que update_option ('default_role', 'custom_role_name') lors de l'activation du plugin.
jayarjo

Heureux d'avoir été utile.
soulseekah

4

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);

Définissez ensuite 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é


1

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

//Make 'Client' a default role

update_option('default_role','client');

2
Pourquoi?? Il ne sert à rien de mettre votre code quelque part sans savoir ce qu'il fait ni comment il fonctionne
Pieter Goosen

Ce n'est pas une bonne solution. Cela exécutera la requête de mise à jour s'il n'est pas mis en action spéciale à chaque demande.
Maciej Paprocki
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.