Cómo hacer que los títulos de las entradas enlacen automáticamente a su contenido en WordPress (sin usar plugins)

En algunos temas o loops personalizados de WordPress, los títulos de las entradas no aparecen enlazados al contenido por defecto. Esto puede afectar tanto la experiencia del usuario como el SEO interno de tu web.

En este artículo te explico cómo solucionar este problema usando funciones nativas de WordPress, sin instalar plugins innecesarios. Además, te explico cómo hacerlo si trabajas con bloques, si estás usando the_title() a mano, o si estás generando loops con WP_Query.

1. ¿Por qué mis títulos no están enlazados?

En la mayoría de temas modernos, los títulos de las entradas ya vienen con el enlace incorporado. Pero si estás creando una plantilla personalizada, o estás trabajando con un constructor o código a medida, puede que estés usando directamente:

<?php the_title(); ?>

Esto mostrará el título, sí, pero sin enlace. Es decir, no enlaza a la entrada individual. Para solucionarlo, hay varias formas, y la mejor depende del contexto en el que estés trabajando.

2. Cómo enlazar manualmente usando the permalink()

La forma más directa y universal es envolver the_title() con una etiqueta <a> que utilice the_permalink():

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

Este método es limpio, seguro y válido para cualquier loop de WordPress, sea el loop principal (have_posts()), una consulta secundaria (WP_Query), o incluso funciones personalizadas.

¿Qué hace cada función?

  • the_title() muestra el título de la entrada actual.
  • the_permalink() obtiene la URL del enlace permanente de esa entrada.

Este método funciona en prácticamente cualquier archivo PHP del theme: index.php, archive.php, single.php, etc.

3. Alternativa: usar the_title() con filtros (title_link personalizado)

Si quieres una solución más global que afecte a todos los títulos de las entradas sin tener que modificar cada plantilla, puedes usar un filtro de WordPress para modificar el comportamiento de the_title().

add_filter('the_title', 'cbz_enlazar_titulos_entradas', 10, 2);

function cbz_enlazar_titulos_entradas($title, $id) {
    if (is_admin()) return $title;

    if (get_post_type($id) === 'post' && !is_singular()) {
        $url = get_permalink($id);
        $title = '<a href="' . esc_url($url) . '">' . $title . '</a>';
    }

    return $title;
}

¿Qué hace este snippet?

  • Afecta solo al frontend, no al panel de administración.
  • Añade automáticamente el enlace a los títulos de los posts (podrías modificarlo para que afecte a custom post types).
  • Solo se aplica en listados, no en páginas individuales (!is_singular()), para evitar enlaces innecesarios en títulos ya visibles.

Puedes colocarlo en tu plugin personalizado o en un mu-plugin si sigues buenas prácticas (si tienes dudas, en este artículo te explico con detalle cómo y dónde colocar códigos personalizados en WordPress).

4. Si trabajas con el editor de bloques (Gutenberg)

Si estás maquetando un archivo de entradas o una plantilla con el editor de bloques, asegúrate de usar el bloque adecuado:

  • El bloque “Título del post” tiene una opción para convertir el título en un enlace. Solo tienes que activarla desde la barra lateral (icono de engranaje → “Hacer del título un enlace”).
enlazar título entrada WordPress,enlace automático título WordPress,the_title() con enlace,título post sin enlace WordPress,loop personalizado WordPress enlaces

Es muy común que esta opción esté desactivada por defecto si estás trabajando con plantillas personalizadas dentro del editor del sitio.

5. Errores comunes que debes evitar

  • Usar get_the_title() en lugar de the_title() sin imprimir el resultado.
  • Olvidar escapar el contenido: recuerda usar esc_url() para los enlaces.
  • Envolver títulos con enlaces dentro de enlaces existentes (lo que genera errores de HTML anidados).

6. ¿Cómo saber si ya están enlazados?

Una forma rápida de comprobar si tus títulos están correctamente enlazados es inspeccionar el código HTML del listado de entradas. Deberías ver algo así:

<h2><a href="https://tuweb.com/mi-post/">Título del post</a></h2>

Si no aparece un <a href=...> dentro del <h2>, tu theme o plantilla no lo está gestionando.

7. ¿Qué método debo elegir?

EscenarioRecomendación
Loop en plantilla PHPEnvolver the_title() con the_permalink()
Quieres aplicar el cambio globalmenteUsa el filtro con add_filter('the_title', ...)
Maquetas con GutenbergActiva la opción de “Hacer del título un enlace” en el bloque de título
Maquetador visual o plugin de bloquesVerifica si el bloque tiene opción de “Hacer del título un enlace” o similar, o cámbialo por uno más flexible (como los de Spectra o Kadence)
códigosWP | Snippets y códigos personalizados para WordPress | codigoswp.com

Más trucos como este en la mejor biblioteca de snippets para WordPress en español

Conclusión

Asegurarse de que los títulos de tus entradas estén correctamente enlazados es clave para la navegación, la arquitectura interna y el SEO. No te fíes de que el theme lo hará por ti: toma la iniciativa y asegúrate de ello a través de alguno de los métodos que te he mostrado.

Y si quieres más snippets útiles como este, pásate por mi biblioteca de trucos para WordPress. Estoy constantemente publicando soluciones reales y testadas para facilitarte el trabajo.

¿Quieres que tu web esté bien construida desde la base?

Puedo ayudarte a diseñar y construir una web rápida, estable y bien hecha, sin dependencias ni parches.

Escríbeme. Estoy a tu disposición.

📸 Imagen: Shahadat Rahman en Unsplash

Comenta este artículo

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio
webCBZ
Resumen de privacidad

El sitio web de webcbz.com utiliza cookies para poder ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a webcbz.com, o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Puedes revisar la política de privacidad de este sitio web en la página de política de privacidad.