Tutorial WordPress: Estilizar el bloque de navegación por paginación de Gutenberg con CSS

·

·

Introducción

En este tutorial completo aprenderás a estilizar el bloque de paginación de Gutenberg (Query Pagination / Navigation Pagination) con CSS para obtener un aspecto consistente con tu tema, mejorar la usabilidad y mantener la accesibilidad. Cubriremos cómo identificar las clases del bloque, aplicar estilos en el frontend y en el editor, controlar estados (hover, focus, activo, deshabilitado), adaptar a móvil y RTL, y cómo añadir transiciones y controles visuales (flechas, números, pills, etc.). También verás ejemplos listos para usar y cómo añadir la hoja de estilo al tema mediante PHP.

1. Entender la estructura HTML y las clases del bloque

Antes de escribir CSS, inspecciona el bloque en el navegador (Inspector / DevTools). Gutenberg suele generar clases con prefijos wp-block-. Para la paginación dentro de un Query Loop encontrarás elementos similares a:

Si tu instalación de WordPress o un plugin cambia la salida, usa DevTools para confirmar los selectores exactos. Los ejemplos de CSS que verás a continuación recurren a estas clases comunes ajústalos si tu HTML difiere.

2. Reglas CSS básicas para la paginación

Un punto de partida: reset de estilos y diseño horizontal centrado con espacios uniformes.

.wp-block-query-pagination {
  display: flex
  flex-wrap: wrap
  gap: 0.5rem
  justify-content: center
  align-items: center
  margin: 2rem 0
  list-style: none
  padding: 0
}
.wp-block-query-pagination a,
.wp-block-query-pagination button {
  display: inline-flex
  align-items: center
  justify-content: center
  min-width: 2.4rem
  height: 2.4rem
  padding: 0 0.6rem
  border-radius: 0.5rem
  text-decoration: none
  border: 1px solid transparent
  background: transparent
  color: inherit
  cursor: pointer
  transition: background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease
}

3. Estilizar estados: hover, foco, activo y deshabilitado

Los estados son esenciales para usabilidad y accesibilidad. Usa :hover y :focus-visible para mostrar interacción, y .is-active o [aria-current=page] para la página actual.

/ Hover y foco accesible /
.wp-block-query-pagination a:hover,
.wp-block-query-pagination button:hover,
.wp-block-query-pagination a:focus-visible,
.wp-block-query-pagination button:focus-visible {
  background-color: #005fcc
  color: #fff
  outline: none
  box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.15)
}

/ Página actual (varía según markup se usa aria-current en HTML5) /
.wp-block-query-pagination [aria-current=page],
.wp-block-query-pagination .is-active {
  background-color: #002f6c
  color: #fff
  cursor: default
  pointer-events: none
}

/ Elementos deshabilitados (por ejemplo prev/next sin enlace) /
.wp-block-query-pagination .wp-block-query-pagination__previous[aria-disabled=true],
.wp-block-query-pagination .wp-block-query-pagination__next[aria-disabled=true] {
  opacity: 0.45
  cursor: not-allowed
}

4. Diseño tipo pills y números circulares

Estilo popular: números como pastillas (pills). Aquí hay dos variantes — pill compacto y circular para páginas únicas.

/ Pills /
.wp-block-query-pagination a,
.wp-block-query-pagination button {
  border-radius: 9999px / pill /
  padding: 0.35rem 0.7rem
}

/ Circular para números /
.wp-block-query-pagination .wp-block-query-pagination__page {
  width: 2.4rem
  height: 2.4rem
  padding: 0
  display: inline-grid
  place-items: center
  border-radius: 50%
}

5. Flechas personalizadas y iconos

Puedes usar pseudo-elementos o SVG inline. Ejemplo con pseudo-elemento usando contenido Unicode o SVG como background-image.

/ Usando pseudo-elemento con flecha Unicode /
.wp-block-query-pagination .wp-block-query-pagination__previous::before,
.wp-block-query-pagination .wp-block-query-pagination__next::after {
  font-family: inherit
  font-weight: 700
  display: inline-block
  color: inherit
}
.wp-block-query-pagination .wp-block-query-pagination__previous::before { content: ◀ margin-right: 0.4rem }
.wp-block-query-pagination .wp-block-query-pagination__next::after { content: ▶ margin-left: 0.4rem }

/ Usando SVG como fondo (más control sobre tamaño y color) /
.wp-block-query-pagination .wp-block-query-pagination__previous,
.wp-block-query-pagination .wp-block-query-pagination__next {
  background-repeat: no-repeat
  background-position: center left
  padding-left: 2rem
}
.wp-block-query-pagination .wp-block-query-pagination__previous {
  background-image: url(data:image/svg xmlutf8,) / sustituir SVG URI-encoded /
}

6. Responsividad y diseño para pantallas pequeñas

En móvil conviene apilar o reducir espacios también se puede ocultar números y dejar solo prev/next.

@media (max-width: 640px) {
  .wp-block-query-pagination {
    gap: 0.35rem
    justify-content: center
  }

  / Opción: ocultar números y mostrar solo prev/next /
  .wp-block-query-pagination .wp-block-query-pagination__items {
    display: none
  }
}

7. Soporte RTL

Considera la orientación de flechas y la dirección del layout. Usa :dir(rtl) o selectores con [dir=rtl] para invertir el posicionamiento.

html:dir(rtl) .wp-block-query-pagination .wp-block-query-pagination__previous::before { content: ▶ margin-right: 0 margin-left: 0.4rem }
html:dir(rtl) .wp-block-query-pagination .wp-block-query-pagination__next::after { content: ◀ margin-left: 0 margin-right: 0.4rem }

8. Temas oscuros y prefers-color-scheme

Respeta los esquemas de color del usuario con la media query prefers-color-scheme.

@media (prefers-color-scheme: dark) {
  .wp-block-query-pagination a,
  .wp-block-query-pagination button {
    color: #e6eef8
    border-color: rgba(255,255,255,0.06)
  }
  .wp-block-query-pagination a:hover,
  .wp-block-query-pagination button:hover {
    background-color: rgba(255,255,255,0.07)
    color: #fff
  }
}

9. Especificidad, prioridad y cuándo usar !important

Gutenberg aplica estilos por defecto con cierta especificidad. Si tus reglas no se aplican, incrementa la especificidad usando selectores más concretos (por ejemplo añadiendo la clase del tema o el contenedor) antes de recurrir a !important. Ejemplo:

/ Mayor especificidad /
.site-content .wp-block-query-pagination a {
  background-color: #fafafa
}

/ Si no queda otra: /
.wp-block-query-pagination a {
  background-color: #fafafa !important
}

10. Añadir estilos al editor (Block Editor) para previsualizar

Para que el editor refleje los mismos estilos que el frontend, incluye una hoja de estilos para el editor. Puedes usar add_action(enqueue_block_editor_assets) o registrar editor-styles. Ejemplo de función PHP para encolar un CSS de editor:


11. Encolar la hoja de estilos en el frontend

Añade un archivo CSS para el frontend y encola en functions.php. Aquí el ejemplo:


12. Uso de theme.json y variables CSS

Si tu tema usa theme.json, registra variables globales (colores, radios) y luego utilízalas en tu CSS para mantener coherencia. Ejemplo CSS consumiendo variables:

.wp-block-query-pagination a {
  background-color: var(--wp--preset--color--background, transparent)
  color: var(--wp--preset--color--text, inherit)
  border-radius: var(--wp--border-radius, 0.5rem)
}

13. Accesibilidad: roles, labels y focus

Asegúrate de que los controles actúen como links o buttons apropiados y que el elemento actual esté marcado con aria-current=page. Mantén un foco claro con :focus-visible en lugar de solo :focus para no mostrar outline al hacer clic con ratón:

.wp-block-query-pagination a:focus-visible,
.wp-block-query-pagination button:focus-visible {
  outline: 3px solid rgba(0,123,255,0.25)
  outline-offset: 3px
}

14. Ejemplo completo (estilo moderno, centrado, pills y flechas)

Archivo CSS listo para pegar en tu tema (ajusta colores a tu paleta):

/ pagination.css - ejemplo completo /
.wp-block-query-pagination {
  display: flex
  flex-wrap: wrap
  gap: 0.5rem
  justify-content: center
  align-items: center
  margin: 1.5rem 0
  padding: 0
}
.wp-block-query-pagination a,
.wp-block-query-pagination button {
  display: inline-flex
  align-items: center
  justify-content: center
  min-width: 2.4rem
  height: 2.4rem
  padding: 0 0.65rem
  border-radius: 9999px
  background: #f3f6fb
  color: #0b2b4a
  border: 1px solid transparent
  text-decoration: none
  font-weight: 600
  transition: background-color 0.12s ease, transform 0.08s ease, box-shadow 0.12s ease
}
.wp-block-query-pagination a:hover,
.wp-block-query-pagination button:hover {
  background: #e2efff
  transform: translateY(-1px)
}
.wp-block-query-pagination [aria-current=page],
.wp-block-query-pagination .is-active {
  background: #0b63d6
  color: #ffffff
  box-shadow: 0 2px 8px rgba(11,99,214,0.18)
  pointer-events: none
}
.wp-block-query-pagination .wp-block-query-pagination__previous::before { content: ◀ margin-right: 0.45rem }
.wp-block-query-pagination .wp-block-query-pagination__next::after { content: ▶ margin-left: 0.45rem }

/ Mobile: reducir paddings /
@media (max-width: 540px) {
  .wp-block-query-pagination a,
  .wp-block-query-pagination button {
    min-width: 2.1rem
    height: 2.1rem
    padding: 0 0.45rem
    font-size: 0.92rem
  }
  .wp-block-query-pagination .wp-block-query-pagination__items { display: none } / opcional /
}

15. Consejos finales y buenas prácticas

Resumen

Estilizar el bloque de paginación de Gutenberg requiere identificar las clases generadas, diseñar estados (hover, focus, activo), proporcionar estilos responsivos y asegurarse de que el editor y el frontend compartan las mismas reglas. Con los ejemplos anteriores tendrás plantillas reutilizables para adaptar la paginación a tu tema y mantener una buena experiencia de usuario y accesibilidad.



Leave a Reply

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