Como ocultar a barra de administração para clientes WooCommerce ou por funções de usuário
Publicados: 2020-02-23É importante ocultar a barra de administração no WooCommerce de assinantes, clientes e usuários não administradores para evitar o acesso ao painel do WordPress. Existem maneiras de ocultar a barra de administração do WordPress como destacado neste tutorial – como ocultar a barra de administração no WordPress. Essas mesmas técnicas podem ser empregadas em um site WooCommerce, mas com algumas condições para cada um dos casos.
Ocultar a barra de administração para a opção de administração do WooCommerce
Para ocultar a barra de administração para o administrador, provavelmente existem alguns plugins que também podem ajudar e funcionarão também para o WooCommerce.
Antes de usar um plugin, você deve primeiro experimentar esta opção rápida no painel de administração do WordPress. Esta opção também funciona bem para sites WooCommerce, não há diferença.
Vá para as configurações do perfil de usuário do administrador e confira esta opção para ocultar a barra de administração para administradores ao visualizar o site.
Desmarque esta opção e salve as configurações e visite o frontend para ver se a barra de administração foi ocultada. Como você pode ver na imagem abaixo, a barra de administração ficará oculta para o usuário administrador ao visualizar o site.
Essa é uma maneira importante de ter uma ideia de como seu site fica quando você não está logado.
Também ajuda quando você está tentando depurar alguns problemas do tema WooCommerce relacionados à exibição do cabeçalho.
WooCommerce Ocultar a opção de código de barras do administrador
Para implementar o mesmo para os clientes e assinantes do WooCommerce, precisamos usar o filtro 'show_admin_bar'
para retornar false para que ocultamos a barra de administração.
Existem várias maneiras de usar esse gancho e também há uma função com o mesmo nome que funciona da mesma forma.
A função show_admin_bar( bool $show )
recebe um parâmetro que é um Boolean
( True ou False ) e pode ser usado da seguinte forma:
show_admin_bar(false);
Este código, quando adicionado ao arquivo functions.php do seu tema, irá esconder a barra de administração. Eu testei com o tema da loja WooCommerce instalado e funciona perfeitamente, oculta a barra de administração.
Você pode melhorar ainda mais essa função e adicionar um teste condicional em que permite que o administrador visualize a barra de administração enquanto o cliente não deve vê-la.
Nesse caso, você testaria condicionalmente com a função de cliente ou qualquer outra função em seu site da qual deseja ocultar a barra de administração.
Você pode obter as funções disponíveis em seu site WordPress em Adicionar novo usuário e a última opção tem o menu suspenso Funções:
Para obter a função de usuário atual, escrevi um tutorial sobre como obter a função atual no WordPress e você pode usá-lo no caso para obter a função de usuário do cliente e definir a função show_admin_bar()
como false.
Nesse caso, a seguir está o código que você pode usar para obter a função de usuário atual e verificar condicionalmente se a função de usuário é um cliente.
Este código eu compartilhei no tutorial sobre como obter a função de usuário atual no WordPress e podemos reaproveitá-lo neste caso:
add_action( 'wp_head', 'njengah_get_current_user_role'); function njengah_get_current_user_role() { if( is_user_logged_in() ) { // verifica se existe um usuário logado $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel //retorna $funções; // retorna a função do usuário atual //Teste com print_r print('<pre>'); print_r( $papéis); print('</pre>'); } senão { return array(); // se não houver usuário logado retorna array vazio } }
Ao testar esse código adicionando ao functions.php, você deverá ver a função de usuário atual exibida na matriz, conforme mostrado na imagem abaixo:
Podemos obter essa função de usuário do array usando a key [0]
e quando modificamos um pouco o código e imprimimos a função de usuário, devemos ver a função de usuário impressa como no código modificado a seguir:
add_action( 'wp_head', 'njengah_get_current_user_role_print'); function njengah_get_current_user_role_print() { if( is_user_logged_in() ) { // verifica se existe um usuário logado $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel echo $roles[0]; } senão { return array(); // se não houver usuário logado retorna array vazio } }
Como obtivemos com sucesso a função de usuário, agora podemos usá-la na função show_admin_bar()
condicionalmente para ocultar a barra de administração para uma função de usuário específica, que pode ser qualquer função.
Para ilustração, agora ocultamos a barra de administração para a função de administrador usando o código abaixo:
add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator'); function njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // verifica se existe um usuário logado $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel if( $roles[0] == 'administrador'){ //verifique o papel aqui. Você pode substituí-lo por outras funções de usuário. Exemplo de editor 'cliente' etc. echo $roles[0]; //imprime o papel a ser exibido para fins de demonstração (deve ser removido em produção) show_admin_bar(false); // oculta a função para esta condição } } senão { return array(); // se não houver usuário logado retorna array vazio } }
Ao adicionar este código ao arquivo functions.php, você verá que a função de administrador é exibida na tela como antes e a barra de administração foi ocultada condicionalmente.
Você pode substituir essa função de administrador pelo cliente e também pode adicionar vários testes condicionais na condição da seguinte forma:
add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer'); function njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // verifica se existe um usuário logado $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel if( $roles[0] == 'customer'){ //verifique o papel aqui. Você pode substituí-lo por outras funções de usuário. Exemplo de editor 'cliente' etc. echo $roles[0]; //imprime o papel a ser exibido para fins de demonstração (deve ser removido em produção) show_admin_bar(false); // oculta a função para esta condição } } senão { return array(); // se não houver usuário logado retorna array vazio } }
Como no caso do administrador, ao testar, você deverá ver o nome da função exibido como cliente e a barra de administração oculta.
Ocultar a barra de administração por recursos atuais do usuário
Uma maneira alternativa de ocultar a barra de administração de todos os usuários que esperam o administrador, você pode adicionar o seguinte código ao functions.php :
if (! current_user_can( 'manage_options') ) { show_admin_bar(false); }
Este código usa o teste condicional current_user_can()
e você pode editá-lo para diferentes privilégios, como para um cliente, deve ser o seguinte:
if ( ! current_user_can( 'ler' ) ) { show_admin_bar(false); }
Isso é equivalente ao papel de um assinante no WordPress. O WooCommerce cria duas funções – Cliente e Gerente de Loja. O cliente é equivalente ao assinante, portanto, neste caso, os recursos de um assinante são ' leitura '.
Você pode conferir todos os recursos dos usuários do WordPress em – Documentação de funções e recursos. Você pode aprender mais sobre as funções do WooCommerce nos documentos de funções e recursos do WooCommerce.
Implementando o código para ocultar a barra de administração no WooCommerce
No código acima, explicamos em detalhes como tudo funciona para ocultar a barra de administração no WooCommerce.
Se você notou que eu estava usando um add_action()
anexado ao 'wp_head'
para fins de teste, mas na produção, precisamos usar um filtro em vez de um gancho de ação.
Nesse caso, o filtro deve se conectar a 'show_admin_bar'
e o código deve ser o seguinte:
add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_for_customers', 20, 1 ); function njengah_hide_admin_bar_for_customers($show){ $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel if( $roles[0] == 'administator'){ // Testa as funções do usuário aqui com base nas chaves do array [0] [1] e respectivos valores $mostrar = falso; retornar $mostrar; } }
Você também pode usar os recursos de cada função para ocultar a barra de administração e o filtro será o seguinte:
/** * Ocultar a barra de administração para outras funções, exceto administrador */ add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_others_expect_admin', 20, 1 ); function njengah_hide_admin_bar_others_expect_admin( $show) { if (! current_user_can( 'administrador' ) ) $show = false; retornar $mostrar; }
Adicione este código ao functions.php para ocultar a barra de administração de outras funções, exceto administradores.
Pensamentos finais
Descrevemos como você pode ocultar a barra de administração no WordPress ou WooCommerce usando várias abordagens. Você pode escolher qualquer um desses métodos e adicionar o código ao seu functions.php. Você também pode modificar o código ainda mais para torná-lo adequado para os diferentes cenários, como ocultar a barra de administração de uma função de usuário personalizada do WordPress.