Come imposto a livello di codice il ruolo predefinito per i nuovi utenti?


10

Vorrei che i nuovi utenti del blog avessero un ruolo personalizzato, piuttosto che un abbonato. Come lo imposto a livello di codice? So che può essere modificato dal backend.

Risposte:


13

Ciò consente ai plug-in di dirottare facilmente il ruolo predefinito mentre sono attivi.

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

Lo uso per assicurarmi che alcuni plug-in che necessitano di ruoli di sottoscrizione lo ottengano indipendentemente dai tentativi di modifica dell'amministratore :)

Saluti .


8

Quando viene creato un nuovo utente tramite la wp_insert_user()funzione, il ruolo viene impostato con il set_role()metodo della Userclasse e viene impostato sul ruolo utente predefinito.

Il ruolo utente predefinito viene recuperato dal database get_option('default_role')e può essere impostato tramite la dashboard di amministrazione andando su Impostazioni> Generale> Ruolo predefinito nuovo utente.

Se hai registrato il tuo nuovo ruolo (usando add_role(), dovrebbe essere disponibile lì tra cui scegliere.

In alternativa, per un maggiore controllo puoi agganciarti alle azioni user_registero profile_updateper poi set_rolecondizionale su di loro, o comunque ti piaccia.


1
Segnerò il tuo come corretto, anche se la vera risposta si è rivelata semplice come update_option ('default_role', 'custom_role_name') all'attivazione del plugin.
jayarjo,

Felice di essere stato d'aiuto.
soulseekah,

4

Dopo aver creato l'utente utilizzando

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

Crea l'oggetto utente

$user = new WP_User($user_id);

Quindi impostare il ruolo

$user->set_role('editor');

È possibile sostituire il ruolo "editor" con uno dei seguenti:

  • Amministratore

  • editore

  • Autore

  • Collaboratore

  • abbonato


1

Inseriscilo nel Pluging o Functions.php del tuo tema

//Make 'Client' a default role

update_option('default_role','client');

2
Perché?? Non serve a nulla mettere il tuo codice da qualche parte senza sapere cosa fa o come funziona
Pieter Goosen

Questa non è una buona soluzione. In questo modo verrà eseguita la query di aggiornamento se non viene eseguita un'azione speciale su ogni richiesta.
Maciej Paprocki,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.