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.
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 .
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.
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
Fügen Sie es in das Plugin oder die functions.php Ihres Themes ein
//Make 'Client' a default role
update_option('default_role','client');