As funções e capacidades de usuários do WordPress lhe dão a capacidade de controlar o que outros usuários podem ou não fazer em seu site. Você pode usá-los para gerenciar ações dos usuários, como escrever e editar artigos, criar novas páginas, moderar comentários, instalar plugins, adicionar novos usuários, e muito mais.
A compreensão das funções e permissões dos usuários é essencial para gerenciar qualquer site WordPress. Por exemplo, se você estiver construindo um site para um cliente, você não quer que ele edite ou altere o tema instalado. Da mesma forma, é insensato deixar que os autores de um blog multi-autor instalem ou removam plugins.
Aprender como gerenciar de forma inteligente as funções de usuários do WordPress o ajudará a simplificar seu fluxo de trabalho, manter seu site seguro e obter o máximo controle sobre seu site.
Neste extenso guia, você aprenderá sobre as funções de usuários do WordPress, as várias capacidades que o WordPress oferece, como editar as funções de usuário existentes, como gerenciar usuários em vários sites e como criar novas funções com um novo conjunto de capacidades.
Entusiasmado? Vamos começar!
Quais são as funções e capacidades de usuários do WordPress?
As funções e capacidades são o pão e a manteiga do gerenciamento de acesso do usuário no WordPress. Para entender quais são as funções de usuários no WordPress, é preciso primeiro saber quais são as capacidades.
O WordPress define qualquer ação que um usuário pode realizar como uma Capacidade. Aqui estão alguns exemplos de capacidades disponíveis no WordPress e como elas são referenciadas em seu código:
- Ler artigos (read)
- Escrever e editar artigos (edit_posts)
- Publicar artigos (publish_posts)
- Instalar plugins (install_plugins)
- Excluir temas (delete_themes)
- Criar usuários (create_users)
- Comentários moderados (moderate_comments)
A maioria das capacidades são autoexplicativas a partir do seu nome. O WordPress tem mais de 70 capacidades hardcoded incorporadas em seu núcleo.
Uma Função é um conjunto de capacidades que você pode atribuir a um usuário. Todo usuário do WordPress precisa ter uma função atribuída a ele. Um usuário só pode empreender ações que sua função justifique.
No gráfico acima, qualquer usuário com Função 1 pode ler mensagens, mas não pode editar mensagens. Usuários com a Função 2 podem ler e editar mensagens, mas não podem publicar mensagens. Qualquer usuário com a Função 3 pode ler, editar e publicar mensagens, mas não pode excluir mensagens, ao contrário dos usuários com a Função 4 que podem excluir mensagens.
O WordPress usa muitas de suas capacidades nativas para definir suas funções de usuário padrão. Por exemplo, ele concede aos Administradores e Editores a capacidade de publish_pages
, mas não as atribui aos Assinantes e Contribuintes.
No mínimo, todo usuário WordPress tem um nome de usuário, senha, um endereço de e-mail e uma função.
O WordPress armazena todas as suas capacidades baseadas em funções em seu banco de dados na tabela wp_options
sob a opção serializada wp_user_roles
. A classe centra lWP_Roles
é usada para definir como armazenar funções e capacidades no banco de dados.
A classe WP_Roles
O WordPress implementa funções e capacidades com a API de funções do usuário, a maioria das quais é baseada na classe central WP_Roles. Você pode encontrar sua fonte no arquivo wp-includes/class-wp-roles.php
.
Se você olhar para o banco de dados, verá que as funções estão dentro de uma array com seus nomes de funções definidas. A chave de rolename
armazena o nome da função do usuário como um valor da chave name
e todas as capacidades em uma array separada como um valor da chave de capability
.
array (
'rolename' => array (
'name' => 'rolename',
'capabilities' => array()
)
)
A classe WP_Roles define uma série de métodos. Você pode chamá-los em qualquer lugar em seu código para interagir com a API de funções do usuário.
Nota: WordPress inclui outra classe central chamada WP_Role (note o singular ‘função’). Ela é usada para estender a API das funções do Usuário.
Se você deserializar o valor wp_user_roles
, ele será algo parecido com isto:
array (
'administrator' =>
array (
'name' => 'Administrator',
'capabilities' =>
array (
'switch_themes' => true,
'edit_themes' => true,
'activate_plugins' => true,
// [...rest of the lines cut off for brevity...]
),
),
'editor' =>
array (
'name' => 'Editor',
'capabilities' =>
array (
'moderate_comments' => true,
'manage_categories' => true,
'manage_links' => true,
// [...rest of the lines cut off for brevity...]
),
),
'author' =>
array (
'name' => 'Author',
'capabilities' =>
array (
'upload_files' => true,
'edit_posts' => true,
'edit_published_posts' => true,
// [...rest of the lines cut off for brevity...]
),
),
'contributor' =>
array (
'name' => 'Contributor',
'capabilities' =>
array (
'edit_posts' => true,
'read' => true,
// [...rest of the lines cut off for brevity...]
),
),
'subscriber' =>
array (
'name' => 'Subscriber',
'capabilities' =>
array (
'read' => true,
'level_0' => true,
),
),
)
Trata-se de um array multidimensional na qual a cada função é atribuído um nome e um conjunto de capacidades. Da mesma forma, o WordPress armazena as capacidades baseadas no usuário na tabela wp_usermeta
com o nome da meta chavewp_capabilities
.
Nota: O prefixo wp_
pode diferir em sua configuração. Depende do valor da variável global $table_prefix
no arquivo wp-config.php
do seu site.
Tabela de Funções vs Capacidades
O WordPress Codex inclui uma simples Tabela de Capacidades vs Tabela de funções, embora não seja tão intuitiva. Ele resume todas as ações que o usuário pode realizar tanto em configurações de um único local quanto em configurações WordPress multisites. Há uma pausa após um determinado número de capacidades para facilitar a distinção entre capacidades de alto e baixo nível.
Para uma melhor representação de todas as funções e capacidades do WordPress, você pode ver esta excelente tabela por Exygy.
Capacidades relacionadas com os blocos reutilizáveis do Gutenberg
O editor de blocos do WordPress Gutenberg introduziu um recurso surpreendente chamado Blocos reutilizáveis. Ele permite salvar um bloco inteiro (ou vários blocos) como modelo e usá-lo em qualquer outro lugar em seu site.
Assim, o WordPress também introduziu as seguintes novas capacidades relacionadas aos blocos reutilizáveis:
- Criar blocos reutilizáveis
- Editar blocos reutilizáveis
- Ler blocos reutilizáveis
- Eliminar blocos reutilizáveis
As capacidades listadas acima funcionam de forma semelhante às capacidades relacionadas aos cargos. Um Administrador ou um Editor tem acesso a todas as capacidades relacionadas a blocos reutilizáveis, enquanto um Autor só pode editar ou apagar blocos reutilizáveis criados por eles. Os Colaboradores só podem ler os blocos reutilizáveis.
Capacidades especiais: Upload não filtrado
Upload não filtrado é uma capacidade especial que não é atribuída a nenhuma função do usuário por padrão, incluindo Administrador ou Super Admin. Ela permite que um usuário efetue upload de arquivos com qualquer extensão (por exemplo, SVG ou PSD), não apenas os que estão na lista branca do WordPress.
Nota: Você pode obter uma lista de tipos de mímica e extensões de arquivos suportados pelo WordPress usando a função wp_get_mime_types().
Para habilitar esta capacidade, você precisa adicionar o trecho de código abaixo ao seu arquivo wp-config.php
. Defina a constante antes da linha que lhe pede para parar de editar.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
Após definir esta constante, você pode dar a qualquer função do usuário em um único site do WordPress instalar a capacidade de Upload não filtrado. Entretanto, em um Multisite instale somente um Super Admin pode ter esta capacidade.
Por exemplo, se você quiser atribuir a capacidade unfiltered_upload
a um Editor, você pode adicionar o seguinte código em qualquer lugar em seu código WordPress (idealmente, execute-o apenas na ativação do tema/plugin):
<?php
$role = get_role( 'editor' );
$role->add_cap( 'unfiltered_upload' );
?>
Discutiremos mais sobre como adicionar ou personalizar as capacidades de todas as funções do usuário, ou usuários específicos mais tarde neste artigo.
Capacidades Primitivas vs Meta Capacidades
Há principalmente dois tipos de capacidades no WordPress:
- Capacidades Primitivas: Estas capacidades são concedidas a funções particulares. Os usuários com estas funções herdam automaticamente as capacidades primitivas.
- Meta Capacidades: Estas capacidades não são concedidas a nenhuma função por padrão. O WordPress verifica um determinado objeto em seu código e banco de dados, como artigo, página, usuário, ou qualquer taxonomia, e se a lógica verificar, ele “mapeia” uma meta capacidade para uma ou mais capacidades primitivas.
Por exemplo, o WordPress concede aos autores a capacidade de edit_posts
para seus próprios artigos, para que eles possam editá-los. No entanto, esta capacidade não permite que eles editem os artigos de outros usuários. É aqui que as meta-capacidades ajudam.
O WordPress usa a função map_meta_cap() para retornar um conjunto de capacidades primitivas ligadas a um objeto específico. Em seguida, ele as compara com o objeto do usuário para verificar se o usuário pode editar o artigo.
Alguns outros exemplos de meta-capacidades são read_post
, delete_post
, remove_user
e read_post
. Vamos dar uma olhada mais detalhada neles na seção de capacidades personalizadas abaixo.
As 6 funções predefinidas de usuários do WordPress
O WordPress inclui seis funções de usuário predefinidas. O primeiro usuário de uma instalação WordPress recebe a função Administrador por padrão (ou a função Super Admin com instalações WordPress Multisite).
Desde que o WordPress começou como uma plataforma de blogs antes de se tornar um CMS completo, ele define a maioria de suas funções de usuário para publicar conteúdo na web. Suas outras funções de usuário predefinidos são: Editor, Autor, Contribuinte e Assinante.
Imagine as funções padrão do usuário do WordPress como uma coleção de cilindros empilhados representando várias capacidades. O maior cilindro tem mais capacidades, o segundo maior tem a segunda maior capacidade e o menor cilindro tem menos capacidades.
Você não deve considerar uma função como superior a outro. Ao invés disso, pense em funções como definir as responsabilidades de um usuário no site.
Uma função do usuário nunca é superior, nem inferior, ela define exatamente o que se pretende.
Agora vamos analisar em detalhes todas as funções pré-definidas do usuário do WordPress.
Administrador
O WordPress atribui ao primeiro usuário de qualquer instalação em um único site a função de Administrador. Ele fica no topo de todas as outras funções do usuário com acesso a todas as capacidades definidas pelo WordPress. Os usuários com a função de Administrador podem realizar ações como:
- Criar e excluir usuários
- Instalar e gerenciar plugins e temas
- Editar plugins, temas, arquivos e códigos
Como um Administrador é a função mais poderosa, você deve atribuí-la apenas àqueles em quem confia. O ideal seria que houvesse apenas um administrador por site.
A função de Administrador em uma rede WordPress Multisite é definido de forma um pouco diferente, embora seja chamado de igual modo. Em uma rede Multisite, a função de Administrador não desfruta de algumas capacidades que faz em um único site WP, como instalar temas e plugins. O WordPress reserva essas capacidades para a função Super Adminr.
Editor
Um editor cuida do gerenciamento do conteúdo de um site WordPress. Eles podem criar, modificar, publicar ou excluir artigos e páginas, mesmo aqueles criados por outros usuários. Algumas de suas capacidades incluem:
- Excluir publicações e páginas
- Moderar Comentários
- Gerenciar links e categorias
- Editar os artigos e páginas de outros usuários
Os editores não podem tomar ações de administração do site, tais como a instalação de plugins e temas. Sua principal responsabilidade é supervisionar o trabalho de outros autores e colaboradores ou ser uma equipe de conteúdo unipessoal.
Dica: Se você estiver administrando um site WordPress por conta própria, você pode criar um usuário alternativo com a função de um editor. Desta forma, você pode manter suas funções administrativas e editoriais separadas. Sua conta de administrador está a salvo de hackers, mesmo que sua conta de editor seja comprometida.
Autor
Como o nome sugere, qualquer usuário com uma função de Autor pode criar, editar e publicar postagens. Eles também podem carregar arquivos de mídia e excluir seus próprios artigos, mas não podem criar páginas ou editar os artigos de qualquer outra pessoa.
Os autores podem adicionar tags aos seus artigos e atribuir seus artigos às categorias existentes, mas não podem criar novas categorias. Como com os editores, eles não têm acesso a nenhuma tarefa administrativa, tais como configurações, plugins e temas.
Nota: Um Autor pode apagar seus artigos mesmo após serem publicadas. Caso você estiver atribuindo a alguém a função de Autor, certifique-se de que você está bem com eles tendo controle total sobre seus artigos, inclusive apagando-as.
Contribuinte
A função de Contribuinte é uma versão leve da função do Autor. Um usuário com uma função contribuinte pode criar seus próprios artigos, apagar rascunhos de artigos, mas eles não podem publicar artigos.
Eles podem salvar rascunhos de seus artigos ou enviá-los a um Editor ou a um Administrador para revisão e publicação. E uma vez publicado o artigo, um Contribuinte não pode apagar seus artigos. Em contraste, os Autores podem apagar seus artigos publicados.
A função do Contribuinte é ideal para novos autores e colaboradores convidados.
Assinante
A função de Assinante se situa no degrau mais baixo do ranking de capacidades. Um usuário com um cargo de Assinante pode gerenciar seu perfil com acesso para ler todos os artigos no site. Isso é praticamente tudo!
Normalmente, todos têm acesso a conteúdo lido em um site WordPress. Entretanto, em sites de assinatura ou de membros, somente usuários logados podem visualizar o conteúdo. Um usuário com a função de Assinante pode ler os artigos nestas instâncias.
Super Admin
A função Super Admin está disponível apenas em instalações WordPress Multisite. Esta função substitui os administradores de um único site na rede Multisite e dá acesso a todas as capacidades de administração de alto nível.
Algumas capacidades só para Super Admins estão disponíveis para Super Admins:
- Criar, gerenciar e excluir sites da rede
- Gerenciar usuários da rede, plugins, temas e opções
- Atualizar todos os sites da rede Multisite
- Estabelecer uma rede Multisite
- Designar administradores para os sites individuais da rede
Em uma rede Multisite, somente o Super Admin pode instalar temas e habilitá-los em toda a rede. Os administradores de sites individuais da rede só podem visualizar e ativar os temas que já estão instalados pela Super Admin.
Por exemplo, instalei o tema gratuito Astra em minha rede, mas não o habilitei para a rede. Assim, os administradores de subsites individuais em uma rede não podem vê-lo listado sob seu painel de Temas.
Na imagem acima, você também pode notar que o menu Plugins não é acessível pelos administradores do site em uma rede. Ao contrário de Temas, um Super Admin pode alterar as configurações da rede para permitir que os Admins instalem e ativem os plugins em seus sites.
Um Super Admin também pode ativar plugins na rede (Network Activate) para que eles sejam forçados em todos os sites da rede. Os administradores do site não podem desativar os plugins ativados na rede. Este cenário é ideal para aplicar plugins essenciais em toda a rede.
A tela do Administrador de Rede
O painel Network Admin serve como um hub central para o Super Admin administrar as capacidades de rede do WordPress Multisite. Só é acessível aos usuários com a função de Super Admin após criar uma rede.
1. Painel de controle
O Painel de Network Admin é o centro central para informações detalhadas sobre os sites de sua rede. Ele lhe dá acesso a todas as configurações de sua rede.
2. Sites
Você pode usar o Painel de Sites para gerenciar os vários sites que fazem parte da rede Multisite. Os sites listados aqui serão um subdiretório, ou um subdomínio, dependendo de como você configurou sua rede WordPress Multisite.
A partir daqui, você pode adicionar novos sites à rede ou remover os sites existentes da rede.
Você também pode acessar informações sobre sites, usuários, temas e configurações gerais da rede a partir daqui. O primeiro site que você cria é o site principal da rede. A rede herda todas as suas configurações a partir das opções do primeiro site.
Clicando no link ou botão Adicionar novo site o levará para a tela acima onde você pode adicionar um novo site à sua rede Multisite. Se você não tiver mais ninguém em mente para ser o administrador do novo site, você pode designar a si mesmo como administrador também.
3. Usuários
A tela Usuários no painel de Network Admin permite gerenciar usuários e adicionar novos usuários à sua rede Multisite. Somente o Super Admin pode adicionar usuários à rede, mas um Super Admin pode modificar as configurações da rede para permitir que os administradores de sites adicionem novos usuários apenas a seus próprios sites.
4. Temas
A Tela de Temas permite gerenciar temas acessíveis pelos administradores do site. Ela não permite ativar ou desativar temas que qualquer site esteja usando, mas apenas definir os temas que qualquer site pode usar.
Caso você desativar um tema que esteja em uso em qualquer parte da rede, ele permanecerá ativo nesse site mesmo após desativá-lo. Mas se os sites utilizarem outro tema, então o tema desativado não aparecerá no painel de Temas do site da rede.
Você pode consultar o artigo da Kinsta de WordPress Multisite para aprender como trabalhar com temas e plugins em sua rede. Você também pode usar o Editor de Temas para editar seus arquivos de temas no próprio painel de controle.
5. Plugins
A Tela de Plugins permite aos usuários adicionar ou excluir plugins na rede. Uma vez adicionados, você pode ativar os plugins a partir do painel de controle de um site. Você também pode ativar os plugins de rede daqui para forçar o uso do plugin em todos os sites da rede.
Por padrão, um Administrador do site não pode acessar o menu Plugin em seu painel de controle. Um Super Admin pode habilitar isto para eles modificando as Configurações de Rede.
Nota: Nem todos os plugins WordPress suportam redes Multisite. Você precisa ler a documentação do plugin para confirmar se eles funcionarão em configurações Multisite.
6. Configurações
Você pode definir e alterar as configurações para toda a rede na tela de configurações de rede. As configurações padrão da rede são baseadas no primeiro site que você criou durante a configuração da rede. Algumas configurações de rede que você pode alterar aqui são:
- Configurações operacionais
- Configurações de registro
- Novas configurações do site
- Configurações de Upload
- Configurações de idiomas
- Configurações do menu
Aqui, você também pode acessar as informações de configuração da rede que você usou quando criou a rede. Você pode consultar a tela Network Admin Settings no WordPress Codex para obter uma visão detalhada de todas as opções de configuração disponíveis.
7. Atualizações
Você pode controlar o processo de atualização tanto para a rede quanto para sites individuais a partir da Tela de Atualizações. O painel Updates mostrará todas as atualizações disponíveis para o WordPress Core, temas e plugins. Uma vez instalada a última versão do WordPress, você pode aplicá-la a todos os sites da rede através da tela Upgrade Network.
Nota: Em uma instalação em um único site do WordPress, o Administrador é essencialmente um Super Admin, pois têm acesso a todas as capacidades de administração.
Você pode personalizar as funções do usuário e também criar suas próprias funções personalizadas usando as capacidades pré-definidas do WordPress.
Vantagens das funções e capacidades do usuário
O sistema de funções e capacidades é a espinha dorsal do gerenciamento de usuários no WordPress. Aqui estão alguns de seus muitos benefícios:
- As funções do usuário ajudam a gerenciar todos os usuários em seu site de forma mais eficiente. Mesmo que você tenha dezenas de usuários em seu site trabalhando de partes distintas do mundo, você pode supervisioná-los facilmente, concedendo as funções certas a cada um deles.
- Ao restringir os usuários a capacidades específicas, ele ajuda a manter seu site mais seguro. Por exemplo, os autores não podem apagar os artigos de outros, os editores não podem alterar temas ou instalar plugins e os assinantes só podem acessar seus próprios perfis.
- Os plugins WordPress podem verificar se um usuário tem certas capacidades e, com base nisso, realizar uma determinada ação. A função current_user_can() do WordPress ajuda a realizar esta verificação. Por exemplo, um plugin de segurança pode mostrar seu painel de opções apenas para o administrador, mas ainda assim exibir avisos de segurança para todos os usuários.
- Você pode editar as funções do usuário para delegar algumas de suas responsabilidades a outros usuários a fim de liberar seu tempo. Digamos que seu site está atraindo muitos comentários. Nesses casos, você pode permitir que um autor de confiança aceite comentários moderados. Você ainda manterá o poder máximo como administrador, mas você pode compartilhar algumas de suas responsabilidades dependendo da necessidade.
- Você pode usar verificações de capacidade para mostrar artigos e páginas privadas que somente determinadas funções do usuário podem ser visualizadas. Isto forma a base dos sites de membros.
- Você pode mostrar ou ocultar elementos frontend em seu site (por exemplo, itens de menu, widgets), dependendo da função do usuário.
- Você pode criar tipos de artigos personalizados com capacidades personalizadas e conceder ou negar essas capacidades para cada função do usuário. Da mesma forma, você também pode definir capacidades personalizadas para permitir que apenas certas funções tenham acesso a suas configurações de plugin ou tema.
Como gerenciar as funções de usuários no WordPress de forma eficaz
Conhecer todas as funções e capacidades do usuário é essencial, mas você também precisa entender como gerenciá-las eficientemente em seus sites. Embora não haja dois sites WordPress exatamente iguais, há algumas regras básicas que você pode seguir para fazer o melhor uso das funções e capacidades do usuário do WordPress.
Dar acesso mínimo a cada usuário
Atribua a cada usuário em seu site apenas o nível de acesso que ele precisa. É sempre melhor dar menos permissões do que demasiadas. Proteger as funções do usuário do WordPress é fundamental para manter seu site e seu conteúdo seguros.
Limitar o número de Administradores e Editores
Como regra geral, cada site deve ter apenas um Administrador e ele deve realizar apenas as principais mudanças no site. O WordPress recomenda que você adira ao “princípio dos privilégios mínimos“, o que sugere que você só deve dar a um usuário os privilégios essenciais para realizar seu trabalho desejado.
Por exemplo, é melhor usar um usuário no nível de Editor para gerenciar o conteúdo do site, em vez de usar um Administrador. Caso você tiver mais de um Editor em seu site, então certifique-se de que você pode confiar neles com suas amplas capacidades.
Atribua a função de Autor a criadores de conteúdo em quem você pode confiar, pois eles podem publicar e apagar artigos. As funções de contribuinte são mais adequadas para novos criadores de conteúdo e artigos.
Personalização das funções de usuários, dependendo da necessidade
As funções padrão do usuário do WordPress são úteis, mas podem não ser adequadas para cada caso de uso. Por exemplo, dando a seus Autores a capacidade de moderar comentários.
Felizmente, o WordPress nos concede a capacidade de personalizar as funções do usuário ou criar novas funções de acordo com nossas necessidades únicas. Você pode fazer isso manualmente por código ou com a ajuda de plugins de funções do usuário do WordPress. Cobriremos os dois métodos neste artigo.
Gerenciamento de usuários na rede WordPress Multisite
O WordPress Multisite inclui configurações exclusivas para o gerenciamento de usuários. Algumas delas são simples de entender, enquanto outras não são.
Vamos explorá-los todos em profundidade.
Configurações de registro em rede multisite
Fora da caixa, somente um Super Admin pode criar novos usuários e sites na rede. No entanto, eles podem permitir que os usuários registrem contas na rede como Assinantes dos subsites.
Para habilitar isto, vá para Network Admin > Network Settings > Registration Settings > Allow new registrations, e habilite a opção “Contas de usuário podem ser registradas”.
Aqui, você também pode permitir que usuários logados criem novos sites em sua rede. Você pode marcar esta opção caso queira restringir a capacidade de criar sites somente para usuários configurados por você.
A última opção permite aos usuários registrar uma conta, bem como criar um site em sua rede. Aos usuários que criam um site em sua rede é dado a função de Administrador para seu subsite.
Uma conta de usuário para acessar toda a rede
Quando você cria uma conta de usuário em sua rede, ou quando um usuário registra uma conta em qualquer um dos sites de sua rede, ele pode navegar para qualquer site na rede após realizar o login. Imagine isto como uma rede social como Facebook ou Reddit, onde você pode criar uma conta e acessar todos os grupos ou subredits com o mesmo perfil de usuário.
Este é um dos maiores benefícios do uso do WordPress Multisite. Ele permite que seus usuários acessem todos os seus sites, registrando apenas uma conta.
Concessão de privilégios extras aos administradores do site
Você pode permitir que os administradores de sites adicionem usuários a seus próprios sites, marcando a opção Adicionar Novos Usuários.
Como mencionado anteriormente, você pode conceder aos administradores do site acesso ao gerenciamento de plugins em seus subsites indo a Network Settings > Menu Settings e verificando a opção Habilitar Enable administration menus > Plugins.
Registro de usuário em nível de subsite
As instalações do WordPress Multisite só permitem o registro de usuários para toda a rede por padrão. Não há opção para permitir registros de usuários para apenas um subsite. Você pode mudar este comportamento usando o plugin Network Subsite User Registration.
Este plugin permite que os administradores do site permitam registros de usuários locais com acesso restrito somente ao seu site. Novos usuários assumirão a função de Assinante por padrão, mas você pode alterar isso modificando as configurações do plugin.
Atribuição do mesmo usuário a múltiplos subsites
Você pode designar o mesmo usuário para vários sites em sua rede com funções únicas. Quando o usuário faz login no painel de seus sites, ele pode acessar o painel para todos os seus sites através da tela Meus Sites.
Concessão de privilégios de Super Admin a outros usuários
Um Super Admin também pode compartilhar seus privilégios com outros usuários. Você deve habilitar esta opção com cautela e somente atribuí-la a usuários em quem você possa confiar.
A compreensão de todas as configurações de gerenciamento de usuários no WordPress Multisite o ajudará a gerenciar melhor sua rede. Para encontrar outros plugins úteis para WordPress Multisite, você pode explorá-los no repositório do WordPress ou no artigo recomendado pela Kinsta sobre plugins para WordPress Multisite.
Como personalizar as funções existentes de usuários do WordPress
Você pode acrescentar capacidades às suas funções de usuário existentes para aumentar seu nível de acesso. Por exemplo, você pode dar aos editores o poder de gerenciar plugins. Ou talvez você queira que os Contribuintes moderem os comentários em seus próprios artigos. Vamos aprender como fazer isso.
Nota: Caso você não gosta de se preocupar com código, você pode pular o método manual e ir diretamente para a seção de plugins de funções e capacidades do usuário abaixo. Ou simplesmente contratar um desenvolvedor WordPress.
Como adicionar capacidades a uma função de usuário
Você pode adicionar uma capacidade a uma função do usuário ou qualquer usuário específico usando a função add_cap() WordPress. Vou usar um plugin personalizado chamado Personalizar função do usuário para mostrar como usar esta função para dar à função de Editor o poder de gerenciar plugins.
<?php
/*
Plugin Name: Customize User Role
Version: 1.0
Description: Demonstrating how to customize WordPress User Roles.
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: customize-user-role
*/
O WordPress recomenda a execução desta função na ativação de plugins ou temas, pois as configurações que ele adiciona são armazenadas no banco de dados na tabela wp_options
sob o campo wp_user_roles
. É ineficiente executar esta função toda vez que você carrega qualquer página, pois as tabelas do banco de dados continuarão a ser sobrescritas em cada carregamento de página.
Como estou usando um plugin, vou usar a função register_activation_hook() para me conectar à ação, executada quando um plugin é ativado. Há muitas maneiras de fazer isso, mas aqui recorro a uma implementação sólida baseada na classe para garantir que não haja conflitos.
// this code runs only during plugin activation and never again
function sal_customize_user_role() {
require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-user-role.php';
Sal_Customize_User_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_user_role' );
O código acima é executado apenas uma vez durante a ativação do plugin. A função hooked sal_customize_user_role
referencia uma classe personalizada chamada Sal_Customize_User_Role
.
Eu defini esta classe em um arquivo separado chamado class-sal-customize-user-role.php
e a coloquei dentro de minha pasta raiz do plugin dentro de uma subpasta chamada includes
, mas você pode nomeá-la como quiser.
<?php
class Sal_Customize_User_Role {
public static function activate() {
// get the Editor role's object from WP_Role class
$editor = get_role( 'editor' );
// a list of plugin-related capabilities to add to the Editor role
$caps = array(
'install_plugins',
'activate_plugins',
'edit_plugins',
'delete_plugins'
);
// add all the capabilities by looping through them
foreach ( $caps as $cap ) {
$editor->add_cap( $cap );
}
}
}
- Comece definindo a classe e sua função que você mencionou no arquivo principal do plugin.
- A função get_role( ‘editor’ ) recupera o objeto de função Editor da classe central
WP_Role
e o atribui à variável$editor
. - O gerenciamento de plugins requer quatro capacidades:
install_plugins
,ativate_plugins
,edit_plugins
edelete_plugins
. Mas a funçãoadd_cap()
aceita apenas um parâmetro. Portanto, precisamos incluir todas as capacidades dentro de um array. Defina o array$caps
para manter todas estas capacidades. Caso você estiver adicionando apenas uma capacidade, então não há necessidade de definir um array. - A função
add_cap( $cap )
adiciona todas as capacidades definidas no array$caps
, fazendo looping através de todas elas usando a função PHP foreach ().
Salve todos os seus arquivos de plugin e depois ative o plugin a partir do painel do seu Administrador. Agora vamos entrar no painel do Editor para ver as mudanças.
Após adicionar as capacidades relacionadas a plugins a sua função de usuário, os Editores podem ver o menu Plugins listado em seu menu administrativo.
Você pode verificar as capacidades atribuídas a cada função do usuário ao ver o valor chave wp_user_roles
armazenado na tabela wp_options
do banco de dados do seu site WordPress.
Aqui estão as capacidades que encontrei atribuídas à função de editor:
'editor' =>
array (
'name' => 'Editor',
'capabilities' =>
array (
'moderate_comments' => true,
'manage_categories' => true,
// [...lines cut off for brevity...]
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
),
),
Observe às três últimas linhas que dão aos Editores a capacidade de gerenciar plugins.
Caso você quiser remover estas capacidades, você pode se conectar à função register_deactivation_hook() e usar a função remove_cap() para remover as capacidades na desativação do plugin, da mesma forma que adicionamos estas capacidades na ativação do plugin.
Agora que você aprendeu como adicionar capacidades a uma função de usuário, é hora de aprender como remover capacidades de uma função de usuário.
Nota: Você também pode se conectar à ação after_switch_theme para disparar este código durante a ativação do tema (e/ou tema infantil). Aqui, você deve incluir o código no arquivo functions.php
do seu tema ou tema infantil (recomendado).
Como remover as capacidades de uma função de usuário
Algumas vezes, você pode querer remover uma capacidade de uma função do usuário. Você pode executar a função remove_cap() para remover uma capacidade de uma função ou de um usuário específico. Por exemplo, é uma excelente ideia remover a capacidade de delete_published_posts
da função Autor do usuário.
Vamos fazer isso!
Vou criar um novo plugin personalizado chamado Personalizar a função do Autor para começar. Assim como antes, executarei este código apenas uma vez conectando-me à função register_activation_hook()
.
<?php
/*
Plugin Name: Customize Author Role
Version: 1.0
Description: Demonstrating how to customize WordPress Author Role.
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: customize-author-role
*/
// this code runs only during plugin activation and never again
function sal_customize_author_role() {
require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-author-role.php';
Sal_Customize_Author_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_author_role' );
A seguir, vou definir a classe Sal_Customize_Author_Role
no arquivo class-sal-customize-author-role.php
. Referenciei estes dois recursos no arquivo principal do plugin acima.
<?php
class Sal_Customize_Author_Role {
public static function activate() {
// get the Editor role's object from WP_Role class
$author = get_role( 'author' );
// remove the capability to delete published posts from an Author role
$author->remove_cap( 'delete_published_posts' );
}
}
A função remove_cap( 'delete_published_posts' )
removerá a capacidade de excluir postagens publicadas da função Autor.
É hora de salvar todos os arquivos de plugin e depois ativar o plugin. Agora, faça login no painel do Autor e confira as mudanças.
A opção Lixo não está mais disponível para artigos publicados por Autores. Entretanto, eles ainda podem excluir seus artigos não publicados que tenham status de Rascunho ou Pendente.
Se você quiser desativar até mesmo esta capacidade, então você também precisa remover a capacidade de delete_posts
da função de Autor.
Adicionando ou removendo capacidades para usuários específicos
Se você quiser adicionar capacidades a um usuário específico, ao contrário de uma função inteira do usuário, então você pode usar a função WP_User::add_cap() class function para adicionar a capacidade.
// get the user object by their ID
$user = new WP_User( $user_id );
// add the capability to the specific user
$user->add_cap( $cap );
Você pode usar a função get_user_by() para recuperar o ID de qualquer usuário usando seu e-mail, nome de usuário de login, ou slug.
Da mesma forma, você pode remover capacidades de um usuário específico usando a função WP_User::remove_cap() class function.
// get the user object by their ID
$user = new WP_User( $user_id );
// add the capability to the specific user
$user->add_cap( $cap );
Como antes, execute estas funções apenas na ativação de plugins ou temas para manter seu código otimizado.
Nota: Tanto add_cap()
como remove_cap()
são métodos objetos da classe WP_Role
. Você não pode chamá-los diretamente em seu código. Você precisa acessá-los usando ou a função get_role()
ou a variável global $wp_roles
.
Duplicando uma função de usuário
Você pode criar uma nova função de usuário clonando todas as capacidades de uma função de usuário existente. Veja como você pode fazer isso:
add_role( 'clone', 'Clone', get_role( 'administrator' )->capabilities );
No exemplo acima, estou criando uma nova função chamada Clone com as mesmas capacidades que um Administrador. A execução deste código sobre a ativação do tema ou plugin assegurará que a função clonada seja adicionada apenas uma vez.
Como criar funções personalizadas do usuário no WordPress
A capacidade de edição das funções padrão do usuário é uma maneira rápida de personalizá-las. Mas se você está procurando editar muitas capacidades de uma função, então é uma boa ideia criar um nova função de usuário personalizado completamente. Desta forma, você pode definir as capacidades exatas que deseja para cada função em seu site.
Para criar uma função de usuário personalizada, você precisa usar a função add_role(). Ela aceita três parâmetros.
add_role( $role, $display_name, $capabilities );
Os dois primeiros parâmetros devem ser strings (e necessários) para que a função seja executada. Eles definem o nome da nova função personalizada e o nome do display, respectivamente. O último parâmetro é opcional e deve ser um array. Você pode usá-lo para atribuir todas as capacidades para a nova função.
Vamos criar uma função personalizado de usuário chamado Community Manager que pode moderar comentários e editar artigos em todo o site. Veja como você pode fazer isso:
<?php
/*
Plugin Name: Add Community Manager Role
Version: 1.0
Description: Add a Custom User Role called 'Community Manager'
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: add-community-manager-role
*/
// this code will run only once on plugin activation and never again
function add_community_manager_role() {
add_role(
'community_manager',
__('Community Manager', 'add-community-manager-role'),
array(
'read' => true,
'moderate_comments' => true,
'edit_posts' => true,
'edit_other_posts' => true,
'edit_published_posts' => true
)
);
}
register_activation_hook( __FILE__, 'add_community_manager_role' );
Como antes, a função add_role()
funciona apenas uma vez na ativação do plugin e nunca mais. Salve o arquivo e ative o plugin no painel do seu Administrador. Agora você deve conseguir atribuir a função de Community Manager tanto aos usuários novos como aos já existentes.
Você também pode verificar as capacidades atribuídas a esta nova função, verificando o valor do campo wp_user_roles
sob a tabela wp_options
dentro do seu banco de dados. Aqui está o que encontrei no banco de dados do meu site:
array (
'administrator' =>
// [...]
'editor' =>
// [...]
'author' =>
// [...]
'contributor' =>
// [...]
'subscriber' =>
// [...]
'community_manager' =>
array (
'name' => 'Community Manager',
'capabilities' =>
array (
'read' => true,
'moderate_comments' => true,
'edit_posts' => true,
'edit_other_posts' => true,
'edit_published_posts' => true,
),
),
)
No final, está listado a nova função que acabamos de acrescentar com todas as suas capacidades. Você pode editar esta função ainda mais adicionando ou removendo capacidades.
Testando uma nova função de usuário
Antes de atribuir a nova função de usuário a qualquer usuário real, é essencial testar se ele está funcionando como pretendido. Aqui está uma lista de verificação que você pode seguir para testá-la:
- Crie uma conta de usuário de teste e atribuir a ela a nova função de usuário.
- Faça o login com o usuário de teste e certifique-se de que todas as suas capacidades estão funcionando como pretendido. Por exemplo, se você lhe concedeu a capacidade de editar mensagens publicadas, então vá a qualquer mensagem e verifique se você pode editá-la. Quanto mais capacidades você tiver atribuído à função, mais tempo você gastará testando todas elas.
- Em seguida, tente visitar qualquer link administrativo de nível superior diretamente em seu navegador. Testei isto visitando diretamente a tela Configurações do WordPress e, como esperado, o WordPress não me deixou entrar.
A mensagem “denied access” (acesso negado) mostrada pelo WordPress - Elimine o usuário de teste após ter terminado de testá-lo.
É isso mesmo! Agora você pode atribuir a nova função aos usuários do seu site.
Você pode usar os plugins User Switching ou View Admin As para trocar entre diferentes contas de usuário em seu site com apenas um clique. Eles são super úteis para testar as capacidades de múltiplos usuários. Cobri os dois em detalhes mais adiante neste artigo.
Criação de funções personalizadas do usuário no WordPress Multisite
O WordPress Multisite trata as funções do usuário de forma um pouco diferente das instalações de um único local do WordPress. Enquanto você pode usar a função add_role()
para criar uma função de usuário personalizada como fizemos antes, a nova função só funcionará no site principal da rede (o primeiro site que você criou). Ele não se propagará para todos os subsites da rede.
Para garantir que o código dentro de sua função de callback funcione em cada site de sua rede, você precisa forçar sua execução através de looping em todos os sites de sua rede, um a um. Para este exemplo, vou criar uma nova função de usuário chamada Plugin Manager que terá todas as capacidades para gerenciar os plugins.
<?php
/*
Plugin Name: Add Plugin Manager Role
Version: 1.0
Description: Add a custom user role named Plugin Manager in a WordPress Multisite Installation
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: add-plugin-manager-role
*/
/*
make the code run on every site in the network
when the plugin is Network Activated
*/
function add_plugin_manager_role( $network_wide ) {
if ( is_multisite() && $network_wide ) {
// run the code for all sites in a Multisite network
foreach ( get_sites(['fields'=>'ids']) as $blog_id ) {
switch_to_blog( $blog_id );
add_role(
'plugin_manager',
__('Plugin Manager', 'add-plugin-manager-role'),
array(
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'delete_plugins' => true
)
);
}
restore_current_blog();
}
else {
add_role(
'plugin_manager',
__('Plugin Manager', 'add-plugin-manager-role'),
array(
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'delete_plugins' => true
)
);
}
}
register_activation_hook( __FILE__, 'add_plugin_manager_role' );
Vamos analisar o código acima em detalhes:
- Primeiro, você se conecta à ação de ativação do plugin com o
register_activation_hook()
e passa em sua função de callback. Aqui, a função callback éadd_plugin_manager_role()
. - Em seguida, você define sua função de callback e passa em um único argumento com ela chamada
$network_wide
. - O parâmetro
$network_wide
é um bool que retornatrue
se você tiver ativado o plugin para toda a rede. Ele retornafalse
se você o tiver ativado somente para o site atual. Além disso, é aplicável somente para instalações Multisite e seu valor padrão éfalse
. - A declaração condicional
is_multisite() && $network_wide
verifica se o plugin é ‘Network Activated’ em uma instalação Multisite. Se fortrue
, ele executa o código incluído na declaraçãoIf
. Se forfalse
, o código naelse
declaração é executado. - A função
get_sites(['fields'=>'ids'])
retorna uma lista de todos os IDs de sites da rede. Usando a funçãoforeach()
PHP, ela percorre todos eles para executar o código em cada site da rede individualmente. - A função switch_to_blog( $blog_id ) direciona as próximas linhas de código a serem executadas para o subsite com
$blog_id
ID. Desde que o WordPress começou principalmente como uma plataforma de blogs, você pode substituir a palavra ‘blog’ por ‘site’ para entender melhor seu uso aqui. - Em seguida, você usa a função
add_role()
para criar a função de usuário personalizado com suas capacidades. Isto segue as mesmas convenções de código explicadas anteriormente neste artigo. - Antes de terminar o loop, defina a função restore_current_blog() para garantir que você restaure o estado do site trocado de volta ao seu estado original.
- O código na
else
declaração é um recurso para garantir a compatibilidade com instalações em um único local.
Salve o arquivo do plugin e vá para a tela Network Admin > Plugins para ‘Network Activate’ seu plugin personalizado. Depois disso, vá para a aba Users sob qualquer tela do seu site Edit Site para verificar se a nova função de Plugin Manager está disponível.
Também confirmei que esta nova função do usuário está disponível em outros sites da rede. Funciona sem falhas.
Você também pode verificar a nova função personalizado e suas capacidades, visitando o banco de dados do seu site. Entretanto, ao contrário das instalações de um único site, o WordPress Multisite cria uma tabela wp_options
separada para cada a função.
Você pode encontrar as tabelas específicas do subsite listadas como wp_2_options
, wp_3_options
, e wp_4_options
. Da mesma forma, as funções se capacidades são armazenados em seus respectivos campos denominados wp_2_user_roles
, wp_3_user_roles
, e wp_4_user_roles
.
Você definiu como criar uma função de usuário personalizado em todos os sites de sua rede, mas e os sites que serão criados no futuro? Para garantir que você acrescente esta função personalizada de usuário a cada novo site criado na rede, você pode anexar o seguinte código ao seu plugin:
// run the code once again when a new site is created
function add_custom_user_role_new_site( $blog_id ) {
// check whether the plugin is active for the network
if ( is_plugin_active_for_network( 'add-custom-user-role/add-custom-user-role.php' ) ) {
switch_to_blog( $blog_id );
add_role(
'plugin_manager',
__('Plugin Manager', 'add-plugin-manager-role'),
array(
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'delete_plugins' => true
)
);
restore_current_blog();
}
}
add_action( 'wpmu_new_blog', 'add_custom_user_role_new_site' );
- A ação wpmu_new_blog aciona sempre que alguém cria um novo site em uma rede Multisite. Você pode se conectar a esta ação com sua função de callback para adicionar a função de usuário personalizado.
- A função is_plugin_active_for_network() verifica se o plugin está ativo para toda a rede e retorna um valor de bool. Ela aceita o caminho do arquivo de plugin como um argumento.
- O resto do código segue a mesma lógica de antes. Você muda para o novo site usando seu parâmetro
$blog_id
, cria a sua função personalizado usando a funçãoadd_role()
, e então muda de volta para o site atual usando a funçãorestore_current_blog()
.
Como remover as funções de usuário do WordPress
Você pode remover qualquer função do usuário do WordPress, usando a função remove_role( ). Ela aceita apenas um argumento, que é o nome da função. Por exemplo, você pode remover a função Contribuinte executando o seguinte código em qualquer parte do seu site:
remove_role( 'contributor' );
Ao contrário da função add_role()
que continuará atualizando o banco de dados se ele não for executado no plugin ou na ativação do tema, a função remove_role()
só será executada se a função existir. Como qualquer função passada como argumento é removida na primeira vez em que é executada, você não precisa se preocupar com o local onde você executa esta função.
Entretanto, para evitar conflitos futuros, remova o código após a remoção da função do banco de dados.
Criando capacidades personalizadas no WordPress
Editar as funções existentes do usuário e criar novas funções personalizadas usando as capacidades incorporadas do WordPress é suficiente para a maioria dos casos de uso, mas você pode querer definir novas capacidades para recursos introduzidos por seu código personalizado (usando um plugin ou tema).
Você pode então usar essas capacidades personalizadas para definir novas funções ou adicioná-las às funções existentes.
Por exemplo, o WooCommerce acrescenta capacidades e funções extras com suas extensas características de eCommerce. Algumas capacidades adicionadas são:
- Permitir o gerenciamento das configurações do WooCommerce
- Criar e editar produtos
- Ver relatórios do WooCommerce
Usando estas capacidades, ele acrescenta duas novas funções para o usuário: Customer e Shop Manager.
A função de Cliente é quase similar a função de Assinante, exceto que os usuários com a função de Cliente podem editar suas informações de conta e visualizar os pedidos atuais/passados. A função de Gerente de Loja inclui todas as capacidades de um Editor, além de que também lhes são concedidas todas as capacidades do WooCommerce.
Outros plugins que introduzem capacidades e/ou funções personalizadas incluem The Events Calendar, Visual Portfolio, WPML, e WP ERP.
Se você mergulhar na documentação de todos estes plugins, você notará que eles ligam quase todas as suas capacidades personalizadas aos tipos de artigos personalizados definidos por eles. No caso do WooCommerce, são os tipos de artigos personalizados de Products e Products, enquanto em outros são Events, Portfolios, Translations, and Customers, respectivamente.
Vamos aprender como criar capacidades personalizadas vinculadas a um tipo de artigo personalizado.
Primeiro, estabeleça um plugin e registre o tipo de artigo personalizado que desejar. No meu exemplo, estou registrando um novo tipo de artigo personalizada chamada Stories.
<?php
/*
Plugin Name: Custom Post Type and Capabilities
Version: 1.0
Description: Register a custom post type and define custom capabilities tied into it.
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: custom-post-type-capabilities
*/
// register a custom post type, in this case it's called "story" //
function cpt_story_init() {
$labels = array(
'name' => _x( 'Stories', 'custom-post-type-capabilities' ),
'singular_name' => _x( 'Story', 'custom-post-type-capabilities' ),
'menu_name' => _x( 'Stories', 'Admin Menu text', 'custom-post-type-capabilities' ),
'name_admin_bar' => _x( 'Story', 'Add New on Toolbar', 'custom-post-type-capabilities' ),
'add_new' => __( 'Add New', 'custom-post-type-capabilities' ),
'add_new_item' => __( 'Add New Story', 'custom-post-type-capabilities' ),
'new_item' => __( 'New Story', 'custom-post-type-capabilities' ),
'edit_item' => __( 'Edit Story', 'custom-post-type-capabilities' ),
'view_item' => __( 'View Story', 'custom-post-type-capabilities' ),
'all_items' => __( 'All Stories', 'custom-post-type-capabilities' ),
'search_items' => __( 'Search Stories', 'custom-post-type-capabilities' ),
'parent_item_colon' => __( 'Parent Stories:', 'custom-post-type-capabilities' ),
'not_found' => __( 'No stories found.', 'custom-post-type-capabilities' ),
'not_found_in_trash' => __( 'No stories found in Trash.', 'custom-post-type-capabilities' ),
'featured_image' => _x( 'Story Cover Image', 'custom-post-type-capabilities' ),
'set_featured_image' => _x( 'Set cover image', 'custom-post-type-capabilities' ),
'remove_featured_image' => _x( 'Remove cover image', 'custom-post-type-capabilities' ),
'use_featured_image' => _x( 'Use as cover image', 'custom-post-type-capabilities' ),
'archives' => _x( 'Story archives', 'custom-post-type-capabilities' ),
'insert_into_item' => _x( 'Insert into story', 'custom-post-type-capabilities' ),
'uploaded_to_this_item' => _x( 'Uploaded to this story', 'custom-post-type-capabilities' ),
'filter_items_list' => _x( 'Filter stories list', 'custom-post-type-capabilities' ),
'items_list_navigation' => _x( 'Stories list navigation', 'custom-post-type-capabilities' ),
'items_list' => _x( 'Stories list', 'custom-post-type-capabilities' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'menu_icon' => 'dashicons-book',
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'story' ),
'capability_type' => array ( 'story', 'stories' ),
'map_meta_cap' => true,
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 6,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
'show_in_rest' => true,
);
register_post_type( 'story', $args );
}
add_action( 'init', 'cpt_story_init' );
Aqui está um desdobramento do roteiro acima:
- Use a função register_post_type() para registrar seu tipo de artigo personalizado. Você pode se conectar à ação
init
para executar esta função. - A função
register_post_type()
aceita dois argumentos. O primeiro é o nome do tipo de artigo personalizado e o segundo é uma array contendo todos os argumentos para o registro do tipo de artigo. - A variável
$args
contém todos os argumentos que você passará para a funçãoregister_post_type()
. Um de seus argumentos (‘labels’) é, em si mesmo, um array definido separadamente como a variável$label
. - Observe o argumento
'capability_type' => 'post'
. É o tipo de capacidade padrão usado pelo WordPress para construir as capacidades de leitura, edição e exclusão para o tipo de postagem personalizada. - Para criar suas capacidades personalizadas, você precisa substituir o valor do argumento do
capability_type
pelo nome preferido de suas capacidades personalizadas. Ele aceita uma string, ou uma array como argumento. O array é útil se o plural de sua capacidade personalizada não segue a sintaxe do sufixo s padrão (por exemplo, livro/livros versus história/estórias). - Você também pode usar o argumento
capabilities
para nomear as novas capacidades de forma diferente do que o WordPress faz automaticamente. - Você deve mapear suas capacidades personalizadas de acordo com as capacidades primitivas do WordPress. Defina o argumento
map_meta_cap
comotrue
para que o WordPress saiba que precisa mapear as capacidades personalizadas conforme sugerido.
A seguir, você precisa adicionar as capacidades personalizadas às funções que deseja dar acesso ao tipo de postagem personalizada Stories. Para este exemplo, estou concedendo a capacidade para as funções de Administrador e Editor.
// add the custom capabilities to the desired user roles
$roles = array( 'editor','administrator' );
foreach( $roles as $the_role ) {
$role = get_role($the_role);
$role->add_cap( 'read' );
$role->add_cap( 'read_story');
$role->add_cap( 'read_private_stories' );
$role->add_cap( 'edit_story' );
$role->add_cap( 'edit_stories' );
$role->add_cap( 'edit_others_stories' );
$role->add_cap( 'edit_published_stories' );
$role->add_cap( 'publish_stories' );
$role->add_cap( 'delete_others_stories' );
$role->add_cap( 'delete_private_stories' );
$role->add_cap( 'delete_published_stories' );
}
Salve o arquivo e depois ative o plugin. Agora você deve ver o link Stories e o painel no painel do seu Administrador ou Editor.
Se você verificar as capacidades disponíveis em seu site, você também verá todas as capacidades relacionadas às histórias que adicionamos. Aqui, estou usando o plugin View Admin As para verificar as capacidades.
Você pode baixar uma versão extensa deste plugin através deste Gist. Ele registra um tipo de artigo personalizado chamado Projects com um conjunto de capacidades personalizadas. E então ele os atribui a duas funções personalizadas chamado de Students e Teachers para ajudá-lo a construir um site educacional.
Há uma maneira de definir capacidades personalizadas que concedem aos usuários acesso a suas configurações de plugin com base em sua função. Discutir como fazer isso está além do escopo deste artigo, mas você pode consultar este tópico informativo no StackExchange para obter mais informações.
Os melhores plugins de funções e capacidades de usuários WordPress
Saber ajustar as funções e capacidades do usuário com código é ótimo, mas não é para todos. Há tantas coisas que podem dar errado se você não tem certeza do que está fazendo. Entretanto, saber como funcionam as funções e as capacidades no WordPress ajuda imensamente, mesmo que você esteja usando um plugin.
Vejamos alguns dos plugins WordPress mais populares para personalizar facilmente as funções e capacidades do usuário do WordPress. Também vou listar alguns plugins úteis para testar funções e recursos rapidamente.
User Role Editor (de Vladimir Garagulia)
O User Role Editor é o plugin de gerenciamento de funções e capacidades mais populares no repositório WordPress. Ele vem com uma interface simples que permite a qualquer pessoa editar as funções e capacidades do usuário com apenas um clique.
Após instalar e ativar o plugin, você pode ir para Users > User Role Editor em seu painel de controle para acessar sua interface primária.
Aqui está uma visão detalhada das seções do painel marcadas acima:
- Selecione a função que deseja personalizar a partir do menu suspenso. Ele listará não apenas as funções padrão, mas todas as funções presentes em seu banco de dados. Você também pode optar por mostrar as capacidades de forma legível para o ser humano em vez de suas constantes. Outra opção permite que você veja as capacidades obsoletas que não são mais suportadas na última versão do WordPress.
- O User Role Editor agrupa todas as capacidades em categorias distintas à esquerda. A categoria Core inclui todas as capacidades incorporadas. Desde que instalei o WooCommerce neste site, você também pode encontrar capacidades para seus tipos de artigos personalizados. Até mesmo o plugin User Role Editor acrescenta seu próprio conjunto de capacidades personalizadas.
- À direita, você encontrará todas as capacidades listadas. Como selecionei o grupo All, posso ver todas as capacidades. Entretanto, você pode filtrá-lo para baixo clicando em um grupo à esquerda. Você também pode marcar a opção Granted Only no topo para ocultar todas as capacidades que não são usadas por nenhuma função de usuários.
- Você também pode Adicionar função, Renomear função, Adicionar Capacidade e Apagar função a partir daqui. Na parte inferior, você encontrará uma opção adicional para Esconder barra de administração para a função do usuário.
Para personalizar qualquer função do usuário, basta marcar ou desmarcar os recursos desejados e clicar no botão Atualizar para salvar suas alterações. É tão fácil quanto isso.
Clique no botão Adicionar função para criar uma nova função. Você pode criar uma função do zero ou duplicar uma função existente usando a opção no dropdown Fazer cópia de.
Você também pode renomear o nome da exibição de funções clicando no botão Renomear função. Entretanto, você não pode alterar seu ID de função (ou nome de função). Uma alternativa é duplicar a função cujo ID você deseja alterar e depois apagar a função original.
Você pode adicionar novas capacidades clicando no botão Adicionar capacidade.
Clicando no botão Apagar funções permite apagar funções personalizadas que não tenham sido atribuídas a nenhum usuário.
Nota: O User Role Editor não permite que você exclua as funções ou capacidades embutidas do WordPress. Também não permite excluir nenhuma função personalizada se ela for atribuída a algum usuário, ou qualquer capacidade personalizada se ela for atribuída a alguma função não-administrativa.
Você deve observar que o botão Delete Capability aparece somente se alguma capacidade não for atribuída a non-admin. Caso contrário, ele fica oculto.
Você também pode atribuir várias funções ao mesmo usuário ou não lhes dar nenhuma função.
Para atribuir múltiplas funções a um usuário, você precisa ir ao painel de usuários em seu painel e, em seguida, clicar no link Capabilities você verá abaixo após passar o mouse sobre o nome de usuário.
Se você for a Settings > User Role Editor em seu painel de controle, você também encontrará opções adicionais para o plugin User Role Editor.
Aqui, você pode alterar as configurações padrão do plugin, instalar módulos adicionais, alterar a função padrão atribuída a novos usuários e até mesmo redefinir as funções e capacidades do usuário para seu estado padrão.
Embora a versão gratuita do User Role Editor seja mais que suficiente para a maioria dos casos de uso, sua versão premium inclui ainda mais recursos, incluindo suporte ao gerenciamento de funções e capacidades nas configurações do WordPress Multisite.
Members by MemberPress
Members é um plugin de funções e capacidades para WordPress focado no usuário. Lançado originalmente como um simples plugin de gerenciamento de funções e capacidades do usuário, desde então ele tem se voltado para as características de membro.
Após instalar e ativar o plugin, você pode visualizar todas as funções disponíveis em seu site, indo para Members > Funções em seu painel de controle.
O Members by MemberPress permite que você exclua todas as funções, incluindo as funções do WordPress embutido, exceto a função de Administrador e a função padrão. Você também pode editar e clonar funções, assim como listar todos os usuários atribuídos a uma função específica.
No painel de função de edição, você pode conceder ou negar explicitamente capacidades a uma função específica, marcando e desmarcando as caixas de seleção relevantes. Você também pode adicionar uma capacidade personalizada à função a partir daqui.
Clicando no link Adicionar nova função, você será conduzido a uma tela semelhante onde poderá criar uma nova função, dando-lhe um nome de exibição, uma identificação e seu conjunto de capacidades.
Assim como no Editor de Funções de Usuário, você pode usar o Members by MemberPress
para atribuir múltiplas funções aos usuários. Você também pode definir permissões de conteúdo para restringir o conteúdo a usuários com apenas uma determinada função.
Você pode configurar seu site e sua alimentação para ser privado. Além disso, você pode restringir o acesso ao REST API do WordPress a pessoas de fora, impondo a autenticação.
Members by MemberPress se distinguem de outros plugins de funções e capacidades com seus incríveis complementos. Eles ajudam a adicionar toneladas de recursos adicionais ao seu site, tais como privacidade do usuário e gerenciamento de dados pessoais (GDPR), adicionar capacidades relacionadas a tags e categoria, estabelecer hierarquia de funções, e muito mais.
Você pode integrar perfeitamente o Members com muitos plugins WordPress populares. Por exemplo, você pode usá-lo para criar e gerenciar recursos personalizados para o plugin Advance Custom Fields (ACF). Alguns outros plugins com os quais ele se integra são Easy Digital Downloads, GiveWP, Meta Box, e WooCommerce.
Os complementos focados em Members (Pagamentos, Assinaturas, Email Marketing e Proteção de Conteúdo Avançado) estão disponíveis apenas em sua versão premium.
WPFront User Role Editor
WPFront User Role Editor ajuda você a criar, editar ou excluir funções e capacidades do usuário em seu site WordPress. Seu conjunto de recursos é como os plugins discutidos anteriormente, mas tem dois recursos que se destacam.
Após instalar e ativar o WPFront User Role Editor, você pode ir para Users > Assign / Migrate screen in your admin dashboard e migrar todos os usuários pertencentes a uma determinada função de usuário para outro. Você pode até mesmo atribuir funções secundárias a seus usuários.
Se você tiver que migrar muitos usuários em seu site de uma função para outra, este recurso virá em super útil.
Outro dos recursos úteis do WPF Front User Role Editor é o Login Redirect baseado em funções. Por exemplo, você pode redirecionar os usuários com a função de Editor para a página Post depois que eles realizarem o login. Você também tem a opção de bloqueá-los de acessar a página /wp-admin
e visualizar a barra de ferramentas no frontend.
Advanced Access Manager
O Advanced Access Manager (AAM) é um poderoso plugin WordPress que lhe permite controlar quase todos os aspectos do seu site. Ele inclui mais de 200 características distintas, sendo projetado para usuários avançados do WordPress que sabem como funcionam as funções e capacidades.
Em comparação com os plugins listados acima, a AAM tem muito mais características. Mas como este é um plugin focado no desenvolvedor, não é tão fácil de usar para iniciantes ou usuários intermediários.
Você pode dividir o painel principal da AAM em quatro regiões distintas. Eu os numerei na imagem acima com uma visão geral abaixo.
- A área mais alta menciona o “assunto” atual em consideração. Aqui, é a função: Administrador, mas pode ser um usuário específico, um visitante anônimo, ou uma configuração padrão para todos.
- A área abaixo do assunto é o painel principal onde você tem todas as configurações para gerenciar o acesso a várias coisas em seu site para o assunto.
- A terceira área é o Gerente de Usuários/Gerente de Furos. Usando seus ícones com abas, você pode selecionar o que deseja gerenciar. É uma função do usuário, um usuário específico, um visitante anônimo, ou um comportamento de acesso padrão para todos?
- A quarta área permite gerenciar as configurações da AAM, instalar seus complementos premium e o suporte de contato.
A AAM organiza seus ambientes em 5 grupos com base em seu comportamento e uso.
- As configurações de Serviços listam todos os módulos da AAM que você pode ativar ou desativar. Ao carregar os módulos seletivamente, você pode manter seu site otimizado.
- A área de Configurações principais permite ativar ou desativar algumas das características principais do AAM e do WordPress.
- As Configurações de Conteúdo dizem respeito ao conteúdo do site (por exemplo, artigos, páginas, tipos de artigos personalizados).
- A seção Configurações de Segurança inclui configurações para o recurso de login seguro da AAM. A partir de agora, há apenas duas configurações disponíveis: Bloqueio por força bruta e uma sessão por usuário.
- O ConfigPress é um recurso interessante que permite alterar a configuração do plugin AAM com código baseado em INI.
O AAM é um plugin orientado ao desenvolvedor que vai além das funções e capacidades do usuário. Ele lhe dá controle granular sobre o que cada função pode ou não fazer em seu site.
Você pode usar a AAM para definir uma Política de Acesso e Segurança para seu site. Ela define qual função, e sob quais condições, pode acessar vários recursos em seu site. Se você quiser começar imediatamente, você pode instalar uma política de acesso pronto para instalação a partir do AAM Access Policy Hub.
AAM permite que você crie contas e funções temporárias de usuário. É uma forma segura de compartilhar uma conta com recursos externos. As contas de usuário temporárias expiram após a data e o horário que você definiu. Com funções temporárias, o usuário será destituído dessa função após o período especificado.
A cobertura de todas as características da AAM está além do alcance deste artigo. Você pode consultar a documentação do Advanced Access Manager para saber mais sobre todas as suas extensas características.
Dica: O User Access Manager é uma alternativa decente ao Advanced Access Manager, embora tenha menos recursos e não seja atualizado com frequência.
User Switching
User Switching permite que você troque entre diferentes contas de usuário do WordPress com apenas um clique. Caso você estiver testando muitas funções e capacidades do usuário, o uso deste plugin o ajudará a economizar muito tempo. A Troca de Usuário utiliza o sistema de autenticação de cookie incorporado no WordPress para lembrar a(s) conta(s) de onde você trocou, para que você possa trocar de volta para elas imediatamente.
Após instalar e ativar o plugin, visite o menu Usuários em seu painel de controle. Você verá um Switch To link para cada usuário. Clicando nisto, você mudará para o usuário que desejar.
Você pode voltar à sua conta original clicando no Switch back to fazer o link no painel ou na tela do seu perfil de usuário.
Você também pode Switch Off temporariamente sua conta de Administrador para ver como seu frontend aparece para os visitantes.
Como medida de segurança, somente usuários com a capacidade de editar usuários podem mudar de conta de usuário. Por padrão, somente os Administradores têm esta capacidade em uma instalação em um único local do WordPress, enquanto em uma rede Multisite somente os Super Admins têm esta capacidade.
Para simplificar ainda mais a mudança de usuário, você pode instalar a extensão Admin Bar User Switching para fazer o link Switch to user aparecer em sua barra de administração.
View Admin As
View Admin As é um plugin avançado de troca de usuários que também inclui o gerente de funções e capacidades. Ao contrário do plugin de troca de usuário, você não precisa instalar uma extensão para adicionar o menu de troca de usuário a sua barra de administração. View Admin As adiciona todos os seus itens de menu principal à barra de administração por padrão.
Você pode alternar entre usuários ou funções existentes (assumindo suas capacidades), mesmo que não exista nenhum usuário com essas funções. Clicando no link visitante do site, você será levado ao frontend do site, onde poderá testar a funcionalidade do site como um usuário regular sem sair da aba do seu navegador.
View Admin As permite que você mude temporariamente suas próprias capacidades. Como isso é feito de forma não destrutiva, você não perde o acesso às suas principais capacidades.
Após mudar para uma conta de usuário, você pode editar suas preferências e configurações de tela diretamente do menu. Você também pode trocar idioma/local no frontend e no backend separadamente.
Você não está limitado a um tipo de visualização, pois pode combinar as várias opções e aplicá-las todas simultaneamente.
View Admin As vem com dois módulos opcionais que você pode habilitar se necessário.
O primeiro módulo adiciona o recurso Role Defaults que permite definir as configurações de tela padrão para todas as funções. Você pode aplicar estes padrões a uma função, a um único usuário, ou a futuros novos usuários.
O segundo módulo permite a funcionalidade do Role Manager. Quaisquer mudanças que você fizer com este módulo nas funções e capacidades são permanentes. Ao contrário de outros plugins de editor de funções, este módulo permitirá que você exclua a função atribuída a um usuário, migrando-as automaticamente para outra função.
Você pode consultar a documentação View Admin As para saber mais sobre suas extensas características.
Funções de usuários do MyKinsta
O recurso de múltiplos usuários do MyKinsta permite criar e gerenciar vários usuários sob a mesma conta, dando-lhes acesso a aspectos únicos de sua conta Kinsta ou sites específicos hospedados com Kinsta.
Há várias funções que você pode escolher para personalizar o acesso do usuário de acordo com suas necessidades.
O primeiro usuário recebe a função de proprietário da empresa por padrão. É a função mais poderosa e inclui todas as capacidades de um Administrador da Empresa também.
Só pode haver um proprietário de cada vez, mas você pode transferir a função, se necessário, para outro administrador da empresa. Ao fazer isso, você também transferirá a propriedade de sua conta Kinsta para o novo Proprietário da Empresa.
Somente o proprietário da empresa pode solicitar à Kinsta que elimine a conta.
Você pode dividir as outras funções do usuário em 2 categorias principais de funções:
- Nível de Empresa
- Nível do site
As funções de nível de empresa dão aos usuários acesso aos detalhes da conta Kinsta em nível de empresa, enquanto as funções de nível de site dão aos usuários acesso apenas a sites específicos atribuídos a eles. Quando você convida um novo usuário ou modifica um já existente, a primeira escolha que você deve fazer é dar a ele acesso à empresa ou ao site.
Funções a nível de empresa
Administrador da empresa
A função de Administrador da Empresa garante o mais alto nível de acesso no MyKinsta. Ele dá ao usuário o controle completo sobre a conta Kinsta e todos os seus sites. Esta função deve ser conferida somente aos usuários em quem você confia.
Desenvolvedor da empresa
A função de Desenvolvedor da Empresa concede acesso para gerenciar todos os sites, incluindo a sua exclusão. Como as funções do usuário MyKinsta são baseadas em hierarquia, um Desenvolvedor de Empresa também pode gerenciar usuários em nível de site. Entretanto, um Desenvolvedor de Empresa não pode acessar as configurações da empresa ou detalhes de faturamento.
Faturas da empresa
A função de faturas da empresa concede acesso apenas para visualizar detalhes de faturamento e configurações da empresa. Eles não têm acesso a nenhum site. Os usuários com a função de faturamento da empresa podem verificar faturas, ativar e-mails automáticos de faturas e alterar os detalhes da empresa, tais como endereço e informações de contato.
Funções no nível do site
Administrador do site
A função de Administrador do Site tem acesso completo a um site específico, incluindo o controle de todos os ambientes ligados a esse site. Entretanto, eles não podem remover um site da conta da empresa. Você pode designar o mesmo usuário como Administrador do Site para vários sites.
Desenvolvedor do site
A função de Desenvolvedor do Site tem acesso apenas ao ambiente de teste do seu site designado. Eles podem fazer qualquer coisa no ambiente de teste, mas não podem remover o ambiente de teste ou mover suas mudanças para produção. Como Administradores de Sites, é possível designar o mesmo usuário que um Desenvolvedor de Sites para vários sites.
Você também pode observar que os Desenvolvedores de Sites não têm acesso aos recursos de análise, gerenciamento de usuários e registro de atividades no painel MyKinsta.
Funções de usuários MyKinsta vs Funções de usuários WordPress
Não há sobreposição entre as funções de usuário do MyKinsta e do WordPress. Você pode usá-las independentemente uma da outra.
Como proprietário de uma conta Kinsta, as funções de múltiplos usuários no MyKinsta ajudam a gerenciar uma equipe de gerentes, desenvolvedores e contadores com facilidade. Isso torna super fácil para as agências de desenvolvimento web gerenciar todos os sites de seus clientes a partir de um único e poderoso painel de controle.
Resumo
As funções e capacidades do WordPress são os conceitos fundamentais por trás do gerenciamento de acesso do usuário. Eles ajudam a controlar quais ações todos os usuários em seu site podem realizar. Eles também são usados por muitos plugins e temas para adicionar recursos altamente úteis ao núcleo do WordPress.
O WordPress vem com seu próprio conjunto de funções e capacidades, mas se você precisar de mais flexibilidade, você pode personalizá-las ou criar suas próprias funções e capacidades. Você pode fazer isso com seu próprio código ou usando um plugin de terceiros.
Compreender quais são as funções e capacidades, e aprender como gerenciá-las, são um passo crucial para dominar o WordPress. Comece com eles hoje mesmo!
Deixe um comentário