Tutorial WordPress: Cómo fijar la barra de administración solo para administradores con CSS

·

·

Introducción

En este artículo explico, paso a paso y con todo lujo de detalles, cómo fijar la barra de administración de WordPress (wp-adminbar) exclusivamente para usuarios administradores usando CSS y pequeñas ayudas en PHP cuando sea necesario. El objetivo es que la barra quede sticky (fija en la parte superior) solo para administradores y que el resto de visitantes no vean cambios ni desplazamientos inesperados en el diseño.

Qué hace falta y consideraciones previas

Enfoques posibles

  1. Solo CSS (si ya existe una clase de rol en el body). Si tu tema o algún plugin añade una clase tipo role-administrator o similar al body, puedes limitar el CSS a esa clase.
  2. Agregar una clase de rol con PHP CSS (recomendado). Añadir una clase al body para usuarios administradores y luego aplicar CSS que fije la barra y ajuste el desplazamiento del contenido.
  3. Encolar un CSS solo para administradores con PHP. Detectar current_user_can(administrator) y encolar (o imprimir) un bloque de estilo en el head solo para administradores.

1) Añadir una clase al body para administradores (PHP)

Esta técnica garantiza que solo los administradores vean el comportamiento. Añade esto en functions.php de tu child theme o en un plugin de snippets:

lt?php
// Añadir clase role-administrator al body cuando el usuario sea administrador
add_filter(body_class,mi_clase_role_administrator)
function mi_clase_role_administrator(classes){
    if ( is_user_logged_in()  current_user_can(administrator) ) {
        classes[] = role-administrator
    }
    return classes
}
?gt

2) CSS para fijar la barra solo para administradores

Una vez añadida la clase, el siguiente CSS fija la barra y evita que el contenido quede oculto por ella. Pégalo en tu hoja de estilos del tema (style.css del child theme) o en el personalizador → CSS adicional.

/ Fijar la barra solo para administradores cuando la barra está visible /
.role-administrator.admin-bar #wpadminbar {
    position: fixed
    top: 0
    left: 0
    right: 0
    z-index: 99999 / ajustar si hay cabeceras con z-index alto /
    width: 100%
}

/ Añadir espacio al contenido para que no quede oculto por la barra (especificar para la altura típica) /
.role-administrator.admin-bar html {
    margin-top: 32px / altura desktop por defecto /
}

/ Ajustes para dispositivos móviles (barra más alta) /
@media screen and (max-width: 782px) {
    .role-administrator.admin-bar html {
        margin-top: 46px / altura móvil típica /
    }
}

/ Si tu tema usa un header fijo con .site-header, puedes en lugar de afectar html
   ajustar directamente el header para no solaparse con la barra /
.role-administrator.admin-bar .site-header {
    position: relative
    z-index: 99998 / menos que #wpadminbar para que la barra quede encima /
}

Notas sobre el CSS

3) Encolar el CSS solo para administradores (alternativa: PHP CSS inline)

Si prefieres no tocar el CSS del tema, puedes imprimir estilos inline solo cuando el usuario sea administrador. Ejemplo para poner en functions.php:

lt?php
add_action(wp_head,mi_adminbar_css_inline)
function mi_adminbar_css_inline(){
    if ( is_user_logged_in()  current_user_can(administrator)  is_admin_bar_showing() ) {
        echo ltstylegt
        echo .admin-bar #wpadminbar{ position:fixed top:0 left:0 right:0 z-index:99999 width:100% }
        echo html.admin-bar{ margin-top:32px }
        echo @media screen and (max-width:782px){ html.admin-bar{ margin-top:46px } }
        echo lt/stylegt
    }
}
?gt

4) Consideraciones prácticas y resolución de problemas

Tabla rápida: alturas típicas de la barra de administración

Dispositivo Altura aproximada
Escritorio 32px
Móvil / tablets 46px

Resumen: pasos recomendados

  1. Añade la clase de rol al body vía filter en functions.php (ejemplo más arriba).
  2. Aplica el CSS que fija #wpadminbar y añade margen superior para el contenido solo a .role-administrator.admin-bar.
  3. Prueba en escritorio y móvil ajusta margin-top y z-index según el tema.
  4. Limpia caché y verifica en una ventana privada para evitar efectos de sesión.

Ejemplo final combinado (resumen)

Coloca el fragmento PHP para añadir la clase en functions.php y el CSS en style.css (child theme) tal como se muestra en los ejemplos anteriores. Con eso lograrás que la barra quede fija únicamente para administradores, sin afectar al resto de usuarios.



Leave a Reply

Your email address will not be published. Required fields are marked *