Tutorial WordPress: Hacer botones de “Copiar código” con HTML y CSS (sin JS, truco CSS)

·

·

Introducción: ¿es posible un botón Copiar código sin JavaScript?

Resumen: técnicamente no existe una forma estándar y universal para copiar texto al portapapeles con solo HTML y CSS. El método seguro y automático requiere JavaScript (Clipboard API). Sin embargo, con un truco CSS/HTML se puede mejorar mucho la experiencia: crear botones que enfaticen y enfoquen el bloque de código para que el usuario solo tenga que pulsar Ctrl/Cmd C. Este artículo explica cómo implementar dicho botón Copiar código en WordPress sin JavaScript, cómo integrarlo en tu tema o en un bloque HTML del editor, y qué alternativas usar cuando quieras copia automática (con JS).

Concepto y principios

Qué hace el truco CSS:

Limitación clave: no se realiza la copia al portapapeles automáticamente. Sólo se mejora la accesibilidad y la rapidez para que el usuario copie manualmente.

Dónde colocar el HTML y CSS en WordPress

  1. HTML: en un bloque HTML personalizado (Gutenberg: Bloque HTML personalizado) o en la edición de entrada en modo Texto. Si usas un page builder, usa su widget de HTML.
  2. CSS: en Personalizar → CSS adicional o en el archivo style.css de tu tema hijo. También puedes añadirlo mediante enqueue en functions.php si prefieres.
  3. Evita el editor visual que a veces limpia etiquetas el bloque HTML personalizado es el más fiable.

Ejemplo completo (HTML CSS) — método CSS-only para facilitar la copia manual

Este ejemplo crea un bloque de código con un botón Copiar que, al pulsarlo, enfoca la textarea con el código. El usuario solo necesita pulsar Ctrl/Cmd C. Puedes pegar el HTML en un bloque HTML personalizado y el CSS en CSS adicional.

HTML (pega en un bloque HTML personalizado)


CSS (pega en Apariencia → Personalizar → CSS adicional)

/ Estilos para el bloque de código y botón copiar (sin JS) /
.code-wrapper {
  position: relative
  max-width: 900px
  margin: 1em 0
  font-family: Menlo, Monaco, Courier New, monospace
}

.code-area {
  width: 100%
  box-sizing: border-box
  padding: 0.9rem 1rem
  font-size: 0.95rem
  line-height: 1.45
  background: #0e1012
  color: #e6eef3
  border-radius: 6px
  border: 1px solid rgba(255,255,255,0.06)
  resize: vertical
  overflow: auto
  white-space: pre
}

/ Botón que en realidad es una label asociada al textarea /
.copy-btn {
  position: absolute
  right: 10px
  top: -10px
  background: linear-gradient(180deg,#2a2f33,#212427)
  color: #fff
  padding: .35rem .6rem
  border-radius: 6px
  font-size: .85rem
  cursor: pointer
  border: 1px solid rgba(255,255,255,0.06)
  box-shadow: 0 2px 6px rgba(0,0,0,0.25)
  user-select: none
}

/ Efecto foco visible al hacer clic en el label (el browser pone foco en la textarea) /
.code-area:focus {
  outline: 3px solid rgba(90,160,255,0.16)
  box-shadow: 0 0 0 4px rgba(90,160,255,0.06)
}

/ Pista que aparece siempre (puede ocultarse en móviles si quieres) /
.copy-hint {
  margin-top: .4rem
  font-size: .8rem
  color: #6d7880
}

/ Ajustes responsivos /
@media (max-width: 480px) {
  .copy-btn { right: 6px top: -12px padding: .25rem .45rem font-size:.8rem }
  .copy-hint { font-size:.75rem }
}

Cómo funciona en la práctica (pasos para el usuario)

  1. El lector hace clic en el botón “Copiar” (la etiqueta ltlabelgt asociada al textarea).
  2. El navegador pone el foco en la textarea que contiene el código.
  3. El lector pulsa Ctrl C (Windows/Linux) o Cmd C (macOS) para copiar al portapapeles.

Mejoras opcionales y accesibilidad

Si quieres copia automática (con JavaScript): cuándo usarla

Si la experiencia deseada es que al pulsar el botón el código se copie automáticamente (sin que el usuario pulse Ctrl/Cmd C), necesitas JavaScript. En WordPress puedes añadir un pequeño script que use la Clipboard API. Aquí tienes un ejemplo (opcional):

// Ejemplo JS opcional (añádelo solo si aceptas usar JS)
document.addEventListener(click, function(e) {
  if (!e.target.matches(.copy-btn)) return
  var textarea = document.querySelector(#   e.target.getAttribute(for))
  if (!textarea) return
  // Selecciona el contenido
  textarea.select()
  textarea.setSelectionRange(0, 99999) // para móviles
  try {
    var ok = document.execCommand(copy) // método legacy funciona en muchos navegadores
    // Alternativa moderna: navigator.clipboard.writeText(textarea.value)
  } catch (err) {
    // Fallback: mostrar instrucción
  }
})

Notas prácticas para WordPress

Variantes y widgets

Hay variantes visuales que puedes aplicar: colocar el botón dentro de la esquina del bloque, sustituir textarea por ltpregt ltcodegt para mejor semántica (aunque enfocar ltpregt no siempre funciona igual), o usar un input tipo text para código corto (one-liners).

Ejemplo semántico usando ltpregt y ltcodegt (NO permite selección automática con label, sirve como alternativa)


lth1gtHola Mundolt/h1gt


Conclusión

En resumen: con solo HTML y CSS no es posible copiar automáticamente al portapapeles, pero sí puedes crear un botón que enfoque el bloque de código y haga que la acción de copiar sea de un solo atajo de teclado (Ctrl/Cmd C). Es una solución sencilla, compatible con WordPress sin necesidad de plugins ni JS, y mejora la usabilidad. Si deseas la copia automática, añade un pequeño script JS con la Clipboard API como complemento.

Recursos y recomendaciones

  • Si finalmente quieres copia automática y máxima compatibilidad, considera usar una librería ligera (por ejemplo: Clipboard.js) o escribir un pequeño snippet con navigator.clipboard.writeText()
  • Prueba en distintos navegadores y dispositivos, ya que el comportamiento de selección y focus puede variar.


Leave a Reply

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