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.

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 .


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.


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


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.