Como definir programaticamente a função padrão para novos usuários?

10

Gostaria que os novos usuários do blog tivessem uma função personalizada, e não o Assinante. Como faço para definir isso programaticamente? Eu sei que isso pode ser alterado no back-end.

jayarjo
fonte

Respostas:

13

Isso permite que os plugins sequestrem facilmente a função padrão enquanto estão ativos.

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

Eu o uso para garantir que alguns plug-ins que precisam de funções de assinante o obtenham, independentemente das tentativas do administrador de mudar :)

Atenciosamente .

EarnestoDev
fonte
8

Quando um novo usuário é criado por meio da wp_insert_user()função, a função é definida com o set_role()método da Userclasse e definida como a função de usuário padrão.

A função de usuário padrão é recuperada do banco de dados get_option('default_role')e pode ser definida através do Painel do administrador, indo para Configurações> Geral> Função padrão do novo usuário.

Se você registrou sua nova função (usando add_role(), ela deve estar disponível lá para você escolher).

Como alternativa, para obter mais controle, você pode conectar-se às ações user_registerou profile_updatepara executá set_role-las condicionalmente, ou da maneira que desejar.

soulseekah
fonte
11
Marcarei a sua como correta, embora a resposta real tenha sido tão simples quanto a opção update_ole ('default_role', 'custom_role_name') após a ativação do plug-in.
Jayarjo 22/10
Fico feliz em ter sido de ajuda.
soulseekah
4

Depois de criar o usuário usando

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

Crie o objeto de usuário

$user = new WP_User($user_id);

Em seguida, defina o papel

$user->set_role('editor');

Você pode substituir a função 'editor' por qualquer um dos seguintes:

  • Administrador

  • editor

  • Autor

  • Contribuinte

  • Assinante

Delphi Electronice
fonte
1

Coloque-o no Pluging or functions.php do seu tema

//Make 'Client' a default role

update_option('default_role','client');
user80490
fonte
2
Por quê?? Ele não serve para nada para colocar o seu em algum lugar do código sem saber o que ele faz ou como ele funciona
Pieter Goosen
Essa não é uma boa solução. Isso executará a consulta de atualização se não for posta em ação especial em cada solicitação.
Maciej Paprocki