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.