
No WordPress pode ser útil restringir quais menus um usuário pode ter acesso. Não é difícil encontrarmos uma situação onde um usuário de um site deve ter acesso aos plugins WooCommerce, para gerenciar suas vendas e Easy Appoinments para gerenciar os agendamentos de seus clientes, mas não pode ter acesso aos menus Tools ou Settings, por exemplo.
A questão é que o WordPress por padrão não faz esse tipo de gerenciamento de permissões, e assim sendo, nós temos duas formas de resolver isso, a primeira é usando algum plugin de terceiros, a segunda é criando nosso próprio plugin para gerenciar as permissões.
Neste tutorial vamos desenvolver a segunda opção, eu a considero mais estável e segura, levando em conta que você terá total controle e conhecimento do que foi feito e do que está rodando no seu site.
Mãos a massa!
Antes de começarmos de fato, um alerta! É comum encontrar na internet instruções para pôr código personalizado no arquivo functions.php do seu tema ativo, porém isso é um equívoco, uma vez que o arquivo functions.php pode ser sobrescrito em uma atualização do seu tema, apagando assim qualquer código personalizado inserido nele.
Mais uma vez então concluímos que uma melhor solução para inserir código personalizado em um site WordPress é criar seu próprio plugin, vamos fazer isso a seguir. E o melhor, é que isso é fácil de fazer!
Dentro da pasta de plugins crie um diretório e um arquivo com o mesmo nome menu-filter/menu-filter.php
Este diretório e arquivos não precisam ter o mesmo nome, porém para um plugin muito simples com somente um arquivo, como é neste caso, isso deixa as coisas mais claras.
Adicione o código abaixo ao arquivo:
<?php
/**
* Plugin Name: My Website Admin Menu Filter
* Description: Show only Appointments, WooCommerce e Products menus
* Version: 1.0
* Author: Fellipe Sanches
*/
function ocultar_menus_para_secovi_colaborador() {
if (!is_user_logged_in()) return;
$user = wp_get_current_user();
$email = $user->user_email;
$admins = array(
"fellipe.silva@secovi.com.br",
"ricardo.moreno@secovi.com.br"
);
if (!in_array($email, $admins, true)) {
remove_menu_page('index.php');
remove_menu_page('edit.php'); // Posts
remove_menu_page('upload.php'); // Media
remove_menu_page('link-manager.php'); // Links
remove_menu_page('edit-comments.php'); // Comenetários
remove_menu_page('edit.php?post_type=page'); // Pages
remove_menu_page('plugins.php'); // Plugins
remove_menu_page('themes.php'); // Appearance
remove_menu_page('users.php'); // Users
remove_menu_page('tools.php'); // Tools
remove_menu_page('edit.php?post_type=project'); //Projetos
remove_menu_page('options-general.php'); // Settings
remove_menu_page('et_divi_options'); // Divi
}
}
function ocultar_menu_novo_para_secovi_colaborador() {
if (!is_user_logged_in()) return;
$user = wp_get_current_user();
$email = $user->user_email;
if (!in_array($email, $admins, true)) {
global $wp_admin_bar;
$wp_admin_bar->remove_node( 'new-content' );
$wp_admin_bar->remove_node( 'comments' );
$wp_admin_bar->remove_node( 'woocommerce-site-visibility-badge' );
$wp_admin_bar->remove_node( 'updates' );
}
}
add_action( 'wp_before_admin_bar_render', 'ocultar_menu_novo_para_secovi_colaborador' );
add_action( 'admin_init', 'ocultar_menus_para_secovi_colaborador' );
O plugin irá aparecer no seu menu de plugins:
