it-swarm.dev

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

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

8
jayarjo

Auf diese Weise können Plugins die Standardrolle einfach übernehmen, 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, diese unabhängig von Administratorversuchen erhalten :)

Grüße .

11
EarnestoDev

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

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

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

Alternativ können Sie sich für mehr Kontrolle in die Aktionen user_register oder profile_update einhängen, um sie dann set_role bedingt zu aktivieren, oder wie Sie möchten.

7
soulseekah

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

Dann legen Sie die Rolle fest

$user->set_role('editor');

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

  • Administrator

  • Editor

  • Autor

  • Mitwirkender

  • Teilnehmer

2

Fügen Sie es in das Plugin oder die functions.php Ihres Themes ein

//Make 'Client' a default role

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