0
36

SHARE

Como Criar Permissões Customizadas e Controle de Acesso em Plugins WordPress

Permissões Customizadas e Controle de Acesso em Plugins WordPress

Aprenda a criar permissões customizadas e gerenciar controle de acesso em plugins WordPress com boas práticas de roles e capabilities.
Este post é a parte 12 de 15 da Série WordPress Extremo: Arquitetura e Engenharia de Plugins

Fala dev, tudo certo? 👋
Aqui é o Asllan Maciel novamente, e no post de hoje da nossa trilha WP Extremo – Arquitetura e Engenharia de Plugins, a conversa é sobre controle de acesso.

Se você quer que seu plugin seja profissional, seguro e escalável, precisa dominar como criar e gerenciar permissões customizadas no WordPress.

Bora juntos? 😎


🤔 Por que trabalhar com permissões personalizadas?

Todo plugin que mexe com usuários administrativos precisa controlar quem pode fazer o quê. E não dá pra confiar só no current_user_can('manage_options') pra tudo.

Vamos pensar em cenários reais:

  • Criar relatórios acessíveis apenas para supervisores
  • Liberar painel de configuração só para admins de contrato
  • Permitir que vendedores editem somente os próprios registros

🔐 Ou seja: precisamos de um controle de acesso granular. E o WordPress permite isso – se a gente usar os recursos certos.


🧱 Capabilities e Roles no WordPress

No WordPress, cada usuário tem um “papel” (role) que vem com um conjunto de capabilities (capacidades). Exemplos:

RoleAlgumas Capabilities
administratormanage_options, edit_users
editoredit_others_posts
authoredit_posts

Mas o melhor é que você pode criar suas próprias capabilities, como:

add_cap('wp24h_view_dashboard');
add_cap('wp24h_edit_clientes');
add_cap('wp24h_gerar_relatorios');

🛠️ Criando permissões customizadas no plugin

A melhor prática é adicionar as capabilities no momento certo – geralmente na ativação do plugin:

function wp24h_add_custom_caps() {
    $role = get_role('administrator');
    if ($role) {
        $role->add_cap('wp24h_view_dashboard');
        $role->add_cap('wp24h_manage_settings');
    }
}
register_activation_hook(__FILE__, 'wp24h_add_custom_caps');

E o inverso na desativação, se quiser limpar:

function wp24h_remove_custom_caps() {
    $role = get_role('administrator');
    if ($role) {
        $role->remove_cap('wp24h_view_dashboard');
        $role->remove_cap('wp24h_manage_settings');
    }
}
register_deactivation_hook(__FILE__, 'wp24h_remove_custom_caps');

🔍 Como verificar permissões no seu plugin

Você pode usar current_user_can() sempre que quiser proteger algo:

if (!current_user_can('wp24h_view_dashboard')) {
    wp_die('Você não tem permissão para acessar esta área.');
}

Ou condicionar a exibição de elementos no admin:

if (current_user_can('wp24h_gerar_relatorios')) {
    echo '<a href="relatorio.php">Relatório</a>';
}

🧪 Dica bônus: mapeie tudo com um helper

Pra evitar “strings mágicas” no código, crie um helper centralizado:

class WP24H_Permissoes {
    const VIEW_DASHBOARD = 'wp24h_view_dashboard';
    const MANAGE_SETTINGS = 'wp24h_manage_settings';

    public static function podeVerDashboard() {
        return current_user_can(self::VIEW_DASHBOARD);
    }
}

Agora, no código você usa:

if (!WP24H_Permissoes::podeVerDashboard()) {
    wp_die('Acesso negado!');
}

Fica mais legível e organizado, né?


🤝 Ligando com outras partes da série

Essa parte conecta muito bem com o que já vimos em:

Agora, vamos deixar tudo bem organizado e seguro: logs com contexto, configurações acessíveis somente por quem pode, e permissões fáceis de manter.


✅ Conclusão

Criar permissões customizadas vai te permitir entregar plugins mais robustos, seguros e adaptáveis a diversos contextos (empresas, SaaS, agências…).

Faz parte da arquitetura moderna que estamos seguindo aqui na nossa série.

Navegação<< Criando Settings Pages Profissionais no WordPressSeparação Clara de Camadas: Core, Domain e Infra >>

Não perca mais nenhuma atualização aqui!

Ative as Notificações!

Clique aqui e, em seguida, clique em Permitir na caixa que aparecerá na parte superior da janela, próximo à barra de endereços.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! Ao se tornar um assinante do WP24Horas, você terá acesso a:

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!

Não perca mais nenhuma atualização aqui!

Tabela de Conteúdo
PUBLICIDADE
Últimos Posts
Como Carregar Scripts e Estilos no WordPress Apenas Quando Necessário

Scripts e Estilos Condicionais: Carregando apenas quando necessário

Internacionalização de Blocos Gutenberg (i18n)

Internationalização de Blocos Gutenberg (i18n)

Como Criar Blocos Condicionais no Gutenberg com Atributos

Como Criar Blocos Condicionais no Gutenberg com Atributos

Comunicação entre Blocos com Block Context API no WordPress

Comunicação entre Blocos com Block Context API no WordPress

Blocos Reutilizáveis com InnerBlocks no Gutenberg

Blocos Reutilizáveis com InnerBlocks no Gutenberg

Como Salvar Dados Personalizados no WordPress Usando Blocos Gutenberg e REST API

Salvando Dados Personalizados no Backend via REST API

Você precisa estar logado para ver esta informação.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! 

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!