Como criar cargos personalizados no WordPress

Veja como criar cargos personalizados no WordPress para restringir ou conceder permissões a cada autor do seu blog.

Crie cargos personalizados no WordPress para restringir ou conceder permissões a cada autor.

0
1064

Digamos que no seu site com múltiplos autores, você tem redatores com diferentes níveis de acesso e permissão. Alguns são Colaboradores (só podem acessar e redigir artigos), outros Editores (além de redigir, podem editar, excluir, etc), e assim por diante. Até aí, tudo certo: é só usar os cargos (roles) do WordPress.

Mas e se você precisa conceder certas permissões a um autor, sem ceder todas do cargo imediatamente acima (ou seja, uma simples promoção está fora de cogitação)? Seja por desconfiança ou prevenção de segurança, pode não ser indicado permitir que alguém menos experiente tenha liberdade para excluir plugins, artigos alheios, alterar o banco de dados, etc.

A chave pra tudo isso está nas Funções e Capacidades do WordPress. Uma opção que gosto é a de criar um novo cargo, assim fica mais organizado e sem chance de fornecer permissões demais sem necessidade.

Vejamos como criar o "Contribuidor Master", para usuários que além das funções inerentes ao cargo, também podem fazer uploads e editar seus próprios artigos, mas não exclui-los; pra isso, preciso de funções parecidas com a dos Autores (que seria o cargo logo acima de Colaborador), mas não todas.

Lembrando antes o resumo de cada função no WordPress:

  • Super Admin - administra toda a rede do blog. Usado em instalações multi-site, onde administradores locais não podem fazer alterações globais.
  • Administrador - tem acesso a virtualmente todas as funções de administração.
  • Editor - pode publicar e gerenciar posts e páginas, além de gerenciar posts de outros usuários.
  • Autor - só pode publicar e gerenciar seus próprios posts.
  • Colaborador - pode escrever e gerenciar suas posts, mas não publicá-los: são enviados para revisão de além com função superior.
  • Assinante - só pode gerenciar o próprio perfil, mas não escrever posts. Útil para marcação de favoritos, gerenciamento de comentários, etc.

Colaboradores podem:

  • edit_posts (editar posts)
  • delete_posts (excluir posts)
  • read (leitura)

Autores podem:

  • delete_posts (excluir posts)
  • delete_published_posts (excluir posts publicados)
  • edit_posts (editar posts)
  • publish_posts (publicar posts)
  • read (leitura)
  • upload_files (enviar arquivos)

Mas quero que meus "Colaboradores Top" só possam:

  • edit_posts (editar posts)
  • publish_posts (publicar posts)
  • read (leitura)
  • upload_files (enviar arquivos)

No arquivos functions.php do seu tema, insira:

add_action( 'admin_init', 'add_role_cont_master' );
 function add_role_cont_master() {
 add_role( 'contribmaster', 'Contribuidor Master', array (
 'edit_posts' => true,
 'publish_posts' => true,
 'read' => true,
 'upload_files' => true
 ));
 }

Envie pro servidor e pronto, seu novo cargo estará disponível.

wordpress cargo personalizado

Se quiser dar outras permissão ao cargo, é só editar o array do "add_role". Por exemplo, se eu quiser permitir também que meu "Colaborador Top" publique HTML sem filtragem, fazer moderação de comentários e fazer upload de arquivos sem filtragem, o array ficaria assim:

add_role( 'contribmaster', 'Contribuidor Master', array(
 'edit_posts' => true,
 'publish_posts' => true,
 'read' => true,
 'upload_files' => true, // <-não esqueça a vírgula
 'moderate_comments' => true,
 'unfiltered_upload' => true,
 'unfiltered_html' => true // <- no último, sem vírgula
  ));

Se ao editar um cargo personalizado que já existe, ele não está aceitando novas regras, pode ser questão de cache. Esvazie caches de navegador e em nuvem, e remova o cargo personalizado antes de recriá-lo. Se mesmo assim você não consegue adicionar funções, é melhor trocar o nome do cargo.

Acrescente às funções:

add_action( 'admin_init', 'remove_role_cont_master' );
 function remove_role_cont_master() {
 remove_role( 'contribmaster' );
 }

Envie ao servidor e depois de atualizar a página, a função será "lida" e apagará o cargo. Depois pode remover a função e começar de novo, com uma nova referência, por exemplo:

add_action( 'admin_init', 'add_role_cont_master' );
 function add_role_cont_master() {
 add_role( 'contribuidormaster', 'Contribuidor Master', array ( // etc...

Dúvidas? Comente.

- Publicidade -

Receba atualizações do Tutoriart

É grátis, e você pode escolher entre receber só sugestões sobre arte, design gráfico, Photoshop, etc, ou só sobre WordPress, blogging, design web, snippets, etc. Ou tudo, se preferir!

Quero assinar...
Ao assinar, você concorda com os Termos de Privacidade.

DEIXE UMA RESPOSTA

Por favor, digite seu comentário!
Por favor, digite seu nome aqui