Cómo ocultar la barra de administración para clientes de WooCommerce o por roles de usuario
Publicado: 2020-02-23Es importante ocultar la barra de administración en WooCommerce a los suscriptores, clientes y usuarios que no son administradores para evitar el acceso al panel de control de WordPress. Hay formas de ocultar la barra de administración de WordPress como se destaca en este tutorial: cómo ocultar la barra de administración en WordPress. Estas mismas técnicas se pueden emplear en un sitio de WooCommerce pero con algunas condiciones para cada uno de los casos.
Ocultar barra de administración para la opción de administración de WooCommerce
Para ocultar la barra de administración para el administrador, probablemente haya algunos complementos que también puedan ayudar y que también funcionen para WooCommerce.
Antes de usar un complemento, primero debe probar esta opción rápida en el panel de administración de WordPress. Esta opción también funciona bien para los sitios de WooCommerce, no hay diferencia.
Vaya a la configuración del perfil de usuario del administrador y busque esta opción para ocultar la barra de administración para los administradores cuando ven el sitio.
Desmarque esta opción y guarde la configuración, luego visite la interfaz para ver si la barra de administración se ha ocultado. Como puede ver en la imagen a continuación, la barra de administración estará oculta para el usuario administrador cuando vea el sitio.
Esta es una forma importante de echar un vistazo a cómo se ve su sitio cuando no ha iniciado sesión.
También ayuda cuando intenta depurar algunos problemas del tema de WooCommerce que se relacionan con la visualización del encabezado.
Opción de código de barras de administrador oculto de WooCommerce
Para implementar lo mismo para los clientes y suscriptores de WooCommerce, necesitamos usar el filtro 'show_admin_bar'
para devolver false a que ocultamos la barra de administración.
Hay una variedad de formas en que puede usar este enlace y también hay una función con el mismo nombre que funciona de la misma manera.
La función show_admin_bar( bool $show )
toma un parámetro que es Boolean
(ya sea verdadero o falso) y se puede usar de la siguiente manera:
show_admin_bar(falso);
Este código, cuando se agrega al archivo functions.php de su tema, ocultará la barra de administración. Lo probé con el tema de la tienda de WooCommerce instalado y funciona perfectamente, oculta la barra de administración.
Puede mejorar aún más esta función y agregar una prueba condicional en la que permita que el administrador vea la barra de administración mientras que el cliente no debería verla.
En este caso, probaría condicionalmente con el rol de cliente o cualquier otro rol en su sitio del que desee ocultar la barra de administración.
Puede obtener los roles disponibles en su sitio de WordPress desde Agregar nuevo usuario y la última opción tiene el menú desplegable Roles:
Para obtener el rol de usuario actual, escribí un tutorial sobre cómo obtener el rol actual en WordPress y puede usarlo en el caso de obtener el rol de usuario del cliente y establecer la función show_admin_bar()
en falso.
En este caso, el siguiente es el código que puede usar para obtener el rol de usuario actual y verificar condicionalmente si el rol de usuario es un cliente.
Este código lo compartí en el tutorial sobre cómo obtener el rol de usuario actual en WordPress y podemos reutilizarlo en este caso:
add_action('wp_head', 'njengah_get_current_user_role'); función njengah_get_current_user_role() { if( is_user_logged_in() ) { // comprobar si hay un usuario conectado $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual $roles = (arreglo) $usuario->roles; // obteniendo el rol //devuelve $roles; // devuelve el rol para el usuario actual // Prueba con print_r imprimir('<pre>'); print_r( $roles); imprimir('</pre>'); } demás { matriz de retorno (); // si no hay un usuario conectado devuelve una matriz vacía } }
Cuando pruebe este código agregándolo a functions.php, debería ver el rol de usuario actual que se muestra en la matriz como se muestra en la imagen a continuación:
Podemos obtener este rol de usuario de la matriz usando la key [0]
y cuando modificamos el código ligeramente e imprimimos el rol de usuario, deberíamos ver el rol de usuario impreso como en el siguiente código modificado:
add_action('wp_head', 'njengah_get_current_user_role_print'); función njengah_get_current_user_role_print() { if( is_user_logged_in() ) { // comprobar si hay un usuario conectado $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual $roles = (arreglo) $usuario->roles; // obteniendo el rol echo $roles[0]; } demás { matriz de retorno (); // si no hay un usuario conectado devuelve una matriz vacía } }
Dado que obtuvimos con éxito el rol de usuario, ahora podemos usarlo en la función show_admin_bar()
condicionalmente para ocultar la barra de administración para un rol de usuario específico que puede ser cualquier rol.
A modo de ilustración, ahora ocultamos la barra de administración para el rol de administrador usando el siguiente código:
add_action('wp_head', 'njengah_hide_admin_bar_for_administrator'); función njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // comprobar si hay un usuario conectado $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual $roles = (arreglo) $usuario->roles; // obteniendo el rol if( $roles[0] == 'administrador'){ //verifique el rol aquí. Puede reemplazarlo con otros roles de usuario. Ejemplo de editor de 'cliente', etc. echo $roles[0]; //imprime el rol en la pantalla para fines de demostración (debe eliminarse en producción) show_admin_bar(falso); // ocultar el rol para esta condición } } demás { matriz de retorno (); // si no hay un usuario conectado devuelve una matriz vacía } }
Cuando agregue este código al archivo functions.php, verá que la función de administrador se muestra en la pantalla como antes y la barra de administración se ha ocultado condicionalmente.
Puede reemplazar este rol de administrador con el del cliente y también puede agregar varias pruebas condicionales en la condición de la siguiente manera:
add_action('wp_head', 'njengah_hide_admin_bar_for_customer'); función njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // comprobar si hay un usuario conectado $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual $roles = (arreglo) $usuario->roles; // obteniendo el rol if( $roles[0] == 'cliente'){ //verifique el rol aquí. Puede reemplazarlo con otros roles de usuario. Ejemplo de editor de 'cliente', etc. echo $roles[0]; //imprime el rol en la pantalla para fines de demostración (debe eliminarse en producción) show_admin_bar(falso); // ocultar el rol para esta condición } } demás { matriz de retorno (); // si no hay un usuario conectado devuelve una matriz vacía } }
Como en el caso del administrador, cuando realiza la prueba, debería ver el nombre del rol que se muestra como el cliente y la barra de administración oculta.
Ocultar la barra de administración por las capacidades del usuario actual
Una forma alternativa de ocultar la barra de administración de todos los usuarios, excepto el administrador, puede agregar el siguiente código a functions.php:
if ( ! usuario_actual_puede( 'gestionar_opciones' ) ) { show_admin_bar(falso); }
Este código usa la prueba condicional current_user_can()
y puede editarlo con diferentes privilegios, como para un cliente, debería ser de la siguiente manera:
if ( ! usuario_actual_puede( 'leer' ) ) { show_admin_bar(falso); }
Esto es equivalente al rol de un suscriptor en WordPress. WooCommerce crea dos roles: Cliente y Gerente de tienda. El cliente es equivalente al suscriptor, por lo que en este caso, las capacidades de un suscriptor son de ' lectura '.
Puede consultar todas las capacidades de los usuarios de WordPress en la documentación de Funciones y capacidades. Puede obtener más información sobre los roles de WooCommerce en los documentos de roles y capacidades de WooCommerce.
Implementando el código para ocultar la barra de administración en WooCommerce
En el código anterior, explicamos en detalle cómo funciona todo para ocultar la barra de administración en WooCommerce.
Si notó que estaba usando un add_action()
adjunto a 'wp_head'
con fines de prueba, pero en producción, necesitamos usar un filtro en lugar de un gancho de acción.
En este caso, el filtro debe engancharse en 'show_admin_bar'
y el código debe ser el siguiente:
add_filter('show_admin_bar', 'njengah_hide_admin_bar_for_customers', 20, 1); función njengah_hide_admin_bar_for_customers($mostrar){ $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual $roles = (arreglo) $usuario->roles; // obteniendo el rol if( $roles[0] == 'administrador'){ // Prueba los roles de usuario aquí basados en las claves de matriz [0] [1] y los valores respectivos $mostrar = falso; devolver $mostrar; } }
También puede usar las capacidades de cada función para ocultar la barra de administración y el filtro será el siguiente:
/** * Ocultar la barra de administración para otros roles, excepto administrador */ add_filter('show_admin_bar', 'njengah_hide_admin_bar_others_expect_admin', 20, 1); función njengah_hide_admin_bar_others_expect_admin ($ mostrar) { if ( ! current_user_can( 'administrador' ) ) $show = false; devolver $mostrar; }
Agregue este código a functions.php para ocultar la barra de administración de otros roles, excepto administradores.
Pensamientos finales
Hemos descrito cómo puede ocultar la barra de administración en WordPress o WooCommerce utilizando varios enfoques. Puede elegir cualquiera de estos métodos y agregar el código a su functions.php. También puede modificar el código aún más para que sea adecuado para los diferentes escenarios, como ocultar la barra de administración de un rol de usuario personalizado de WordPress.