Cuando construyes un sitio de membresia, tienda online (WooCommerce) o una plataforma donde los usuarios inician sesion, el comportamiento predeterminado de WordPress puede ser molesto. Cada usuario conectado ve la barra de administración negra en la parte superior de la pantalla.
Descubre más sobre servicios de desarrollo WordPress en WPPoland. Aunque es útil para ti (el admin) para editar rápidamente entradas o saltar al panel, rompe la inmersion para un clientes regular. Se ve “WordPress-esco” y a menudo se superpone con tu cabecera personalizada.
Si tu objetivo es un area de miembros o escaparate más limpio, la solución habitual es ocultar la barra de herramientas en el frontend para usuarios que no necesitan acceso editorial, dejando la experiencia del panel intacta para administradores.
El problema: Desorden de la barra de administración
La barra de administración de WordPress (también llamada Toolbar) aparece para todos los usuarios conectados por defecto. Aunque es útil para administradores del sitio, puede ser problematica para:
- Sitios de membresia: Rompe el aspecto profesional
- Tiendas de comercio electronico: Distrae de la experiencia de compra
- Portales de clientes: Se ve poco profesional
- Aplicaciones personalizadas: No coincide con tu diseño
Problemás comunes:
- Se superpone con cabeceras personalizadas
- Muestra branding de WordPress (se ve poco profesional)
- Revela funcionalidad de admin a no administradores
- Ocupa espacio vertical
- Puede entrar en conflicto con CSS personalizado
La solución completa
No necesitas un plugin para arreglar esto. Solo anade este fragmento completo al archivo functions.php de tu tema o a un plugin específico del sitio.
Implementación básica
/**
* Desactivar la barra de admin para todos excepto administradores
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar');
function wppoland_remove_admin_bar() {
if ( ! current_user_can( 'administrator' ) && ! is_admin() ) {
show_admin_bar( false );
}
}
Como funciona
current_user_can('administrator'): Comprueba si el usuario actual tiene el rol ‘Administrador’.! is_admin(): Asegura que estamos en el frontend del sitio (no queremos ocultar la barra dentro del Panel).show_admin_bar(false): La función magica que la desactiva.
Importante: El hook after_setup_theme se ejecuta lo suficientemente temprano para evitar que la barra de admin se cargue, lo cual es más eficiente que eliminarla despues de renderizarla.
Implementaciones avanzadas
Ocultacion basada en roles
Ocultar la barra de admin para roles de usuario específicos:
/**
* Ocultar barra de admin para roles específicos
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar_by_role');
function wppoland_remove_admin_bar_by_role() {
if ( is_admin() ) {
return; // Siempre mostrar en area de admin
}
$current_user = wp_get_current_user();
// Ocultar para estos roles
$hidden_roles = array( 'subscriber', 'customer', 'contributor' );
if ( array_intersect( $hidden_roles, $current_user->roles ) ) {
show_admin_bar( false );
}
}
Ocultacion basada en capacidades
Usa capacidades en lugar de roles para más flexibilidad:
/**
* Ocultar barra de admin basada en capacidades
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar_by_capability');
function wppoland_remove_admin_bar_by_capability() {
if ( is_admin() ) {
return;
}
// Ocultar si el usuario no puede editar entradas
if ( ! current_user_can( 'edit_posts' ) ) {
show_admin_bar( false );
}
}
Ocultacion condicional (específica por página)
Ocultar la barra de admin en páginas o tipos de entrada específicos:
/**
* Ocultar barra de admin en páginas específicas
*/
add_action('after_setup_theme', 'wppoland_conditional_admin_bar');
function wppoland_conditional_admin_bar() {
if ( is_admin() ) {
return;
}
// Ocultar en páginas de WooCommerce
if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
if ( ! current_user_can( 'manage_woocommerce' ) ) {
show_admin_bar( false );
}
}
// Ocultar en tipos de entrada personalizados
if ( is_singular( 'course' ) || is_singular( 'membership' ) ) {
if ( ! current_user_can( 'administrator' ) ) {
show_admin_bar( false );
}
}
}
Control basado en meta del usuario
Permite a los usuarios alternar la barra de admin via su perfil:
/**
* Permitir a usuarios alternar barra de admin en perfil
*/
add_action( 'show_admin_bar', 'wppoland_user_preference_admin_bar' );
function wppoland_user_preference_admin_bar( $show ) {
if ( is_admin() ) {
return $show;
}
$user_id = get_current_user_id();
$user_preference = get_user_meta( $user_id, 'show_admin_bar_front', true );
if ( $user_preference === 'false' ) {
return false;
}
return $show;
}
Alternativa solo CSS (no recomendada)
Puedes ocultar la barra de admin con CSS, pero es menos eficiente:
/* Ocultar barra de admin con CSS */
#wpadminbar {
display: none !important;
}
/* Ajustar padding del body */
.admin-bar .site-header {
top: 0 !important;
}
Por que no se recomienda:
- La barra de admin sigue cargandose (desperdicia recursos)
- El JavaScript sigue ejecutandose
- Puede causar desplazamientos de layout
- No es semántico (ocultar vs. no cargar)
Consideraciones de rendimiento
Por que el código supera al CSS
Enfoque CSS:
- El HTML de la barra de admin sigue cargandose (~15KB)
- El JavaScript sigue ejecutandose (~10KB)
- Los estilos siguen cargandose (~5KB)
- Total: ~30KB desperdiciados por página
Enfoque de código:
- La barra de admin nunca se carga
- Cero sobrecarga
- HTML más limpio
- Mejor rendimiento
Temporizacion del hook
Usa after_setup_theme en lugar de init o wp_loaded:
// Correcto: Hook temprano, previene la carga
add_action('after_setup_theme', 'wppoland_remove_admin_bar');
// Incorrecto: Demasiado tarde, la barra ya cargo
add_action('wp_loaded', 'wppoland_remove_admin_bar');
Por que usar código en lugar de un plugin?
Existen plugins como “Hide Admin Bar” que hacen exactamente esto. Pero por que instalar un plugin (que anade opciones en la base de datos y potencial sobrecarga) para 5 lineas de código?
Sobrecarga del plugin:
- Consultas a la base de datos para opciones
- Archivos PHP adicionales cargados
- Mantenimiento de actualizaciones del plugin
- Potenciales conflictos
- Peticiones HTTP extra
Beneficios del código:
- Cero sobrecarga
- Control de versiones
- Sin conflictos de plugins
- Ejecucion más rápida
- Parte de tu tema/plugin
Casos de uso del mundo real
Caso de uso 1: Sitio de membresia
add_action('after_setup_theme', function() {
if ( is_admin() ) {
return;
}
if ( ! current_user_can( 'administrator' ) ) {
show_admin_bar( false );
}
});
Caso de uso 2: Tienda WooCommerce
add_action('after_setup_theme', function() {
if ( is_admin() ) {
return;
}
$user = wp_get_current_user();
if ( in_array( 'customer', $user->roles ) ) {
show_admin_bar( false );
}
});
Caso de uso 3: Blog multi-autor
add_action('after_setup_theme', function() {
if ( is_admin() ) {
return;
}
$hidden_roles = array( 'author', 'contributor', 'subscriber' );
$current_user = wp_get_current_user();
if ( array_intersect( $hidden_roles, $current_user->roles ) ) {
show_admin_bar( false );
}
});
Resolución de problemas
Problema: La barra de admin sigue mostrando
Solución:
add_action('after_setup_theme', 'wppoland_force_remove_admin_bar', 999);
function wppoland_force_remove_admin_bar() {
if ( ! current_user_can( 'administrator' ) && ! is_admin() ) {
add_filter( 'show_admin_bar', '__return_false' );
show_admin_bar( false );
}
}
Problema: Problemás de layout despues de ocultar
Solución: Ajustar padding del body si es necesario:
body.admin-bar {
padding-top: 0 !important;
}
.site-header {
top: 0;
}
Mejores prácticas
1. Siempre comprobar is_admin()
// Correcto
if ( ! is_admin() && ! current_user_can( 'administrator' ) ) {
show_admin_bar( false );
}
// Incorrecto (oculta en area de admin)
if ( ! current_user_can( 'administrator' ) ) {
show_admin_bar( false );
}
2. Usar capacidades, no roles
// Correcto: Mas flexible
if ( ! current_user_can( 'edit_posts' ) ) {
show_admin_bar( false );
}
3. Probar todos los roles de usuario
Siempre prueba con diferentes roles de usuario:
- Administrador (debe ver la barra)
- Editor (decidir según necesidades)
- Autor (decidir según necesidades)
- Suscriptor (generalmente ocultar)
- Cliente (generalmente ocultar)
Resumen
Ocultar la barra de administración de WordPress para no administradores es una forma simple pero efectiva de mejorar la experiencia de usuario de tu sitio. Hace que tu sitio se vea más profesional y menos “WordPress-esco”.
Puntos clave:
- Usa
show_admin_bar( false )en el hookafter_setup_theme - Siempre comprueba
is_admin()para evitar ocultar en el panel - Usa capacidades para control flexible
- La solución con código es mejor que CSS o plugins
- Prueba con diferentes roles de usuario
Este simple ajuste mejora la experiencia de usuario (UX) de tu sitio significativamente, haciendolo sentir más como una aplicación profesional y menos como un blog estándar. En 2026, con el enfoque en experiencia de usuario y rendimiento, ocultar la barra de admin para no administradores se considera una mejor práctica para sitios de membresia, tiendas de comercio electronico y aplicaciones personalizadas.



