Tutorial WordPress: Diseñar breadcrumbs con HTML básico y CSS simple

·

·

Introducción: ¿Por qué usar breadcrumbs en WordPress?

Breadcrumbs (migas de pan) mejoran la navegación, la usabilidad y el SEO de un sitio WordPress. Permiten al usuario entender su posición dentro de la jerarquía del sitio y facilitan el rastreo por parte de los buscadores. Este tutorial muestra cómo diseñar breadcrumbs con HTML básico y CSS simple, y cómo integrarlos en un tema de WordPress sin depender de plugins pesados.

Conceptos clave antes de comenzar

Estructura HTML recomendada

Una estructura simple, semántica y accesible usa una lista ordenada. Aunque aquí mostramos el HTML como ejemplo, el código real en WordPress se generará desde PHP.

Ejemplo de HTML básico para breadcrumbs

ltol class=breadcrumbs aria-label=Breadcrumbgt
  ltli class=breadcrumb-itemgtlta href=/gtIniciolt/agtlt/ligt
  ltli class=breadcrumb-itemgtlta href=/categoriagtCategoríalt/agtlt/ligt
  ltli class=breadcrumb-item active aria-current=pagegtEntrada Actuallt/ligt
lt/olgt

CSS simple para diseñar breadcrumbs

El siguiente CSS crea una apariencia limpia, con separadores utilizando ::before y una versión responsiva. Es intencionalmente simple y fácil de adaptar.

Ejemplo de CSS

.breadcrumbs{
  list-style: none
  padding: 0
  margin: 0
  display: flex
  flex-wrap: wrap
  font-size: 0.95rem
  align-items: center
}
.breadcrumb-item{
  margin: 0
  padding: 0
  display: inline-flex
  align-items: center
}
/ Separador mediante pseudo-elemento excepto en el primer elemento /
.breadcrumb-item   .breadcrumb-item::before{
  content: ›
  margin: 0 0.6rem
  color: #bbb
  font-size: 0.9rem
}
/ Enlaces /
.breadcrumb-item a{
  color: #0073aa
  text-decoration: none
}
.breadcrumb-item a:hover{
  color: #005177
  text-decoration: underline
}
/ Ítem activo (página actual) /
.breadcrumb-item.active{
  color: #333
  font-weight: 600
}
/ Responsive: en pantallas pequeñas mostrar separación más pequeña /
@media (max-width: 480px){
  .breadcrumb-item   .breadcrumb-item::before{
    margin: 0 0.35rem
  }
  .breadcrumbs{
    font-size: 0.85rem
  }
}

Generador sencillo de breadcrumbs en PHP para WordPress

Este fragmento PHP muestra una función ligera para construir breadcrumbs según el tipo de vista: inicio, categoría, entradas, páginas y búsqueda. Se puede pegar en functions.php o en un archivo de utilidades del tema.

Ejemplo de función PHP

/ Función simple para breadcrumbs /
function mi_tema_breadcrumbs() {
  if (is_front_page()) { return } // no mostrar en la portada si no se desea

  echo ltol class=breadcrumbs aria-label=Breadcrumbgt

  // Enlace a inicio
  echo ltli class=breadcrumb-itemgtlta href= . esc_url(home_url(/)) . gtIniciolt/agtlt/ligt

  if (is_home()  is_front_page()) {
    // nada más
  } elseif (is_category()  is_single()) {
    if (is_single()) {
      cats = get_the_category()
      if (cats) {
        cat = cats[0]
        cat_link = get_category_link(cat->term_id)
        echo ltli class=breadcrumb-itemgtlta href= . esc_url(cat_link) . gt . esc_html(cat->name) . lt/agtlt/ligt
      }
      // título del post actual
      echo ltli class=breadcrumb-item active aria-current=pagegt . get_the_title() . lt/ligt
    } else {
      // archivo de categoría
      category = get_queried_object()
      echo ltli class=breadcrumb-item active aria-current=pagegt . esc_html(category->name) . lt/ligt
    }
  } elseif (is_page()) {
    // páginas jerárquicas: recorrer padres
    global post
    if (post->post_parent) {
      ancestors = array_reverse(get_post_ancestors(post->ID))
      foreach (ancestors as ancestor_id) {
        title = get_the_title(ancestor_id)
        permalink = get_permalink(ancestor_id)
        echo ltli class=breadcrumb-itemgtlta href= . esc_url(permalink) . gt . esc_html(title) . lt/agtlt/ligt
      }
    }
    echo ltli class=breadcrumb-item active aria-current=pagegt . get_the_title() . lt/ligt
  } elseif (is_search()) {
    echo ltli class=breadcrumb-item active aria-current=pagegtResultados de búsqueda para:  . get_search_query(false) . lt/ligt
  } elseif (is_tag()) {
    tag = get_queried_object()
    echo ltli class=breadcrumb-item active aria-current=pagegt . esc_html(tag->name) . lt/ligt
  } elseif (is_author()) {
    author = get_queried_object()
    echo ltli class=breadcrumb-item active aria-current=pagegtAutor:  . esc_html(author->display_name) . lt/ligt
  } else {
    // otras vistas: archivo, 404, etc.
    if (is_archive()) {
      the_archive_title( ltli class=breadcrumb-item active aria-current=pagegt, lt/ligt )
    } elseif (is_404()) {
      echo ltli class=breadcrumb-item active aria-current=pagegt404 - No encontradolt/ligt
    }
  }

  echo lt/olgt
}

Cómo llamar a la función desde la plantilla

Inserta la llamada en el lugar apropiado de tu tema, por ejemplo en header.php o en la plantilla single.php justo después del título o del contenedor principal:

lt?php if (function_exists(mi_tema_breadcrumbs)) { mi_tema_breadcrumbs() } ?gt

Mejoras y buenas prácticas

Ejemplo rápido de CSS para ocultar tramo intermedio en pantallas pequeñas

/ Mostrar solo primer y último en móvil /
@media (max-width: 420px){
  .breadcrumb-item:not(:first-child):not(:last-child){
    display: none
  }
  .breadcrumb-item   .breadcrumb-item::before{
    / Ajustar separador cuando algunos items están ocultos /
    margin: 0 0.4rem
  }
}

Tabla resumida de propiedades CSS útiles

Propiedad Uso
display:flex Permite alinear ítems horizontalmente y manejar el wrapping
list-style:none Oculta viñetas predeterminadas de la lista
::before Crear separadores sin agregar elementos extra al HTML
aria-current=page Mejora la accesibilidad indicando la página actual

Compatibilidad y consideración SEO

Los breadcrumbs construidos con una lista son amigables para SEO. Si añades microdatos o JSON-LD, sigues las recomendaciones de Google para breadcrumbs. No uses demasiadas rutas profundas que compliquen la estructura del sitio.

Resumen práctico

  1. Define una estructura HTML semántica (ol gt li) para breadcrumbs.
  2. Aplica CSS simple para separación y estilo, usando pseudo-elementos para los separadores.
  3. Genera el HTML desde PHP en tu tema de WordPress, escapando todas las salidas.
  4. Considera accesibilidad y marcado estructurado para SEO.

Fragmentos finales

Los ejemplos anteriores proporcionan una base clara y ligera para implementar breadcrumbs sin plugins. Se pueden adaptar y ampliar según la complejidad del sitio y las necesidades de diseño.



Leave a Reply

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