Wie lege ich programmgesteuert die Standardrolle für neue Benutzer fest?

9

Ich möchte, dass neue Benutzer des Blogs eine benutzerdefinierte Rolle haben und nicht Abonnent. Wie stelle ich das programmgesteuert ein? Ich weiß, dass es vom Backend aus geändert werden kann.

Jayarjo
quelle

Antworten:

13

Auf diese Weise können Plugins die Standardrolle problemlos entführen, während sie aktiv sind.

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

Ich benutze es, um sicherzustellen, dass einige Plugins, die Abonnentenrollen benötigen, es erhalten, unabhängig davon, ob der Administrator versucht, es zu ändern :)

Grüße .

EarnestoDev
quelle
8

Wenn ein neuer Benutzer über die wp_insert_user()Funktion erstellt wird, wird die Rolle mit der set_role()Methode der UserKlasse festgelegt und auf die Standardbenutzerrolle festgelegt.

Die Standardbenutzerrolle wird aus der Datenbank abgerufen get_option('default_role')und kann über das Admin-Dashboard unter Einstellungen> Allgemein> Neue Benutzerstandardrolle festgelegt werden.

Wenn Sie Ihre neue Rolle registriert haben (mithilfe von add_role(), sollte sie dort zur Auswahl stehen.

Alternativ können Sie für mehr Kontrolle die Aktionen user_registeroder profile_updateeinbinden, set_roleum sie dann bedingt zu aktivieren, oder wie Sie möchten.

Soulseekah
quelle
1
Ich werde Ihre als richtig markieren, obwohl sich herausstellte, dass die eigentliche Antwort bei Aktivierung des Plugins so einfach wie update_option ('default_role', 'custom_role_name') war.
Jayarjo
Ich bin froh, geholfen zu haben.
Soulseekah
4

Nachdem Sie den Benutzer mit erstellt haben

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

Erstellen Sie das Benutzerobjekt

$user = new WP_User($user_id);

Stellen Sie dann die Rolle ein

$user->set_role('editor');

Sie können die Rolle "Editor" durch eine der folgenden Funktionen ersetzen:

  • Administrator

  • Editor

  • Autor

  • Mitwirkender

  • Teilnehmer

Delphi Electronice
quelle
1

Fügen Sie es in die Pluging- oder functions.php-Datei Ihres Themas ein

//Make 'Client' a default role

update_option('default_role','client');
user80490
quelle
2
Warum?? Es hat keinen Zweck, Ihren Code irgendwo
Pieter Goosen
Das ist keine gute Lösung. Dadurch wird eine Aktualisierungsabfrage ausgeführt, wenn nicht bei jeder Anforderung eine spezielle Aktion ausgeführt wird.
Maciej Paprocki