Tutorial WordPress: Cómo cambiar el estilo de links dentro de notices de WooCommerce

·

·

Introducción

Este tutorial explica, paso a paso y con ejemplos prácticos, cómo cambiar el estilo de los enlaces que aparecen dentro de las notices de WooCommerce en el frontend. Cubriremos desde la solución más sencilla basada en CSS hasta cómo encolar estilos desde functions.php, cómo añadir clases a los enlaces cuando generas la notice y cómo superar conflictos de especificidad o caché. Incluye buenas prácticas de accesibilidad y comprobaciones para depurar problemas.

1. ¿Qué son las notices de WooCommerce y por qué los enlaces pueden necesitar estilo propio?

WooCommerce muestra mensajes al usuario (notices) para información, errores o confirmaciones. Las clases más habituales son .woocommerce-message, .woocommerce-info y .woocommerce-error. Dependiendo del tema, los enlaces dentro de esas notices pueden heredar colores o estilos que rompen la legibilidad o el diseño. La solución ideal suele ser CSS específico para esas clases o añadir clases propias a los enlaces generados.

2. Solución CSS pura (rápida y frecuentemente suficiente)

La forma más directa es añadir reglas CSS que apunten a los selectores de WooCommerce. Estas reglas pueden incluir color, padding, borde, estado :hover, y transiciones para conseguir enlaces visibles y accesibles.

Ejemplo de CSS básico

.woocommerce-message a,
.woocommerce-info a,
.woocommerce-error a {
  color: #ffffff
  background-color: #0071a1
  padding: 6px 10px
  border-radius: 4px
  text-decoration: none
  display: inline-block
  transition: background-color .15s ease, color .15s ease
}
.woocommerce-message a:hover,
.woocommerce-info a:hover,
.woocommerce-error a:hover {
  background-color: #005f86
  color: #ffffff
}

Variantes posibles: si prefieres que sean enlaces inline normales en lugar de botones, elimina el background-color y el padding, y usa color y text-decoration.

Evitar que el tema anule tus estilos

Si el tema aplica reglas más específicas o usa !important, aumenta la especificidad o usa !important como último recurso.

/ Selector más específico para forzar el estilo /
.woocommerce .site-content .woocommerce-message a,
.woocommerce .site-content .woocommerce-info a,
.woocommerce .site-content .woocommerce-error a {
  color: #ffffff !important
  background-color: #0071a1 !important
}

3. Encolar CSS desde functions.php (práctica recomendada)

Colocar CSS en el fichero del tema hijo o en un archivo CSS cargado por WordPress es la forma más ordenada. Si prefieres inyectar CSS pequeño desde PHP, usa wp_register_style wp_add_inline_style para no romper el orden de carga.

Ejemplo: encolar CSS inline

add_action( wp_enqueue_scripts, function() {
    // Registrar un handle vacío para poder añadir CSS inline
    wp_register_style( custom-woocommerce-notices, false )
    wp_enqueue_style( custom-woocommerce-notices )

    css = 
    .woocommerce-message a,
    .woocommerce-info a,
    .woocommerce-error a {
      color: #ffffff
      background-color: #0071a1
      padding: 6px 10px
      border-radius: 4px
      text-decoration: none
      display: inline-block
      transition: background-color .15s ease, color .15s ease
    }
    .woocommerce-message a:hover,
    .woocommerce-info a:hover,
    .woocommerce-error a:hover {
      background-color: #005f86
      color: #ffffff
    }

    wp_add_inline_style( custom-woocommerce-notices, css )
} )

4. Añadir clases personalizadas a los enlaces dentro de una notice (control desde PHP)

Si generas la notice desde código (por ejemplo desde un plugin o functions.php), puedes insertar HTML con una clase propia para aplicar estilos específicos solo a esos enlaces.

Ejemplo de wc_add_notice con enlace con clase

url = esc_url( home_url( /mi-pagina/ ) )
wc_add_notice(
    sprintf(
        %s,
        url,
        esc_html__( Ver detalle, textdomain )
    ),
    notice // tipos: notice, success, error (dependiendo de la versión)
)

CSS para la clase personalizada

.woocommerce a.mi-link-notice {
  color: #ffffff
  background: #ff6f61
  padding: 5px 9px
  border-radius: 3px
  text-decoration: none
}
.woocommerce a.mi-link-notice:hover {
  background: #e85b4f
}

5. Accesibilidad y buenas prácticas

6. Depuración: qué comprobar si los estilos no se aplican

7. Ejemplo completo y práctico

Supongamos que quieres botones azules con texto blanco en todas las notices, con buen foco y transición. Añade este CSS (por ejemplo en el CSS del child theme):

/ Estilo principal para enlaces en notices /
.woocommerce-message a,
.woocommerce-info a,
.woocommerce-error a {
  color: #ffffff
  background-color: #0071a1
  padding: 6px 12px
  border-radius: 6px
  text-decoration: none
  display: inline-block
  transition: transform .08s ease, box-shadow .08s ease
  box-shadow: none
}
.woocommerce-message a:hover,
.woocommerce-info a:hover,
.woocommerce-error a:hover {
  transform: translateY(-1px)
  box-shadow: 0 4px 10px rgba(0,0,0,0.08)
}
.woocommerce-message a:focus,
.woocommerce-info a:focus,
.woocommerce-error a:focus {
  outline: 3px solid rgba(0,113,161,0.18)
  outline-offset: 2px
}

8. Notas finales

El método más simple es CSS dirigido a .woocommerce-message a, .woocommerce-info a y .woocommerce-error a. Si el tema interfiere, aumenta la especificidad o encola tu CSS desde functions.php. Si generas las notices por código, añade clases a los enlaces para estilos más precisos. Revisa siempre accesibilidad y realiza pruebas con el inspector y con cachés desactivados.

Referencias útiles: documentación oficial de WooCommerce y las plantillas de notices en https://docs.woocommerce.com/.



Leave a Reply

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