Volver al blog
Validador Hreflang9 min de lectura3 de septiembre de 2026

Cómo Implementar Hreflang en WordPress: WPML, Polylang y Sin Plugin

Guía práctica para configurar hreflang en WordPress. Cuándo usar WPML, cuándo basta Polylang, cómo hacerlo sin plugin de multilingüe y qué errores genera cada método.


En WordPress casi nunca escribirás las etiquetas hreflang a mano: las genera el plugin de multilingüe que uses. El problema es que cada plugin las genera de una forma, con sus propios puntos ciegos, y ninguno te avisa cuando el resultado es incorrecto. Esta guía cubre los tres escenarios reales —WPML, Polylang y sin plugin de multilingüe— con lo que hay que configurar en cada uno y lo que suele romperse.

Antes de elegir plugin: decide la estructura de URLs

WordPress admite subcarpeta, subdominio o dominio propio para cada idioma, y el plugin que elijas debe soportar la que necesites. Es la decisión más cara de cambiar después, así que tómala antes de instalar nada. Si aún no la tienes clara, la comparativa completa —autoridad, coste, señales geográficas— está en su propia guía:

Si dudas, subcarpeta. Es lo que usan la mayoría de sitios multilingües en WordPress y lo que mejor soportan todos los plugins.

Opción 1: WPML

WPML es el plugin multilingüe más completo del ecosistema WordPress. Gestiona hreflang de forma automática para todo el contenido traducido, incluida la etiqueta de retorno y el x-default. Es de pago, a partir de unos 39 $ al año. Es la opción sensata si tienes WooCommerce, campos personalizados o un volumen de contenido que haga inviable el mantenimiento manual.

  1. 1.Instala y activa WPML Multilingual CMS. Para traducir textos de plantilla y widgets necesitarás además WPML String Translation.
  2. 2.Ve a WPML → Idiomas y añade los idiomas del sitio. Ahí eliges también el formato de URL: subcarpeta, subdominio o dominio propio.
  3. 3.En WPML → Idiomas → "Idioma de los visitantes" desactiva la redirección automática por navegador si la tienes activa: puede impedir que Google rastree las versiones que no coinciden con su IP.
  4. 4.Traduce cada página desde el panel de WPML que aparece en el editor. Solo el contenido vinculado como traducción entra en el grupo hreflang.
  5. 5.WPML inyecta las etiquetas en el head de cada página automáticamente. No hay nada más que configurar.

Lo que suele fallar con WPML

  • Contenido traducido pero no vinculado: si duplicas una página en lugar de traducirla desde el panel, WPML no la mete en el grupo y esa URL se queda sin hreflang.
  • Traducciones parciales: si una página existe en español y francés pero no en inglés, el grupo solo incluirá los dos idiomas existentes. Es correcto, pero conviene saberlo antes de asustarse al validar.
  • Cachés agresivas: algunos plugins de caché sirven la versión cacheada de un idioma en la URL de otro, y con ella el hreflang equivocado. Purga la caché antes de validar.

Opción 2: Polylang

Polylang tiene una versión gratuita perfectamente funcional para sitios pequeños y medianos. Gestiona traducciones de entradas, páginas, categorías y etiquetas, y añade hreflang automáticamente al contenido vinculado. La versión Pro añade soporte para WooCommerce, tipos de contenido personalizados y traducción de slugs.

  1. 1.Instala Polylang desde el repositorio oficial de WordPress.
  2. 2.Ve a Idiomas → Idiomas y añade cada idioma con su código de configuración regional correcto (es_ES, en_US, fr_FR). Este valor es el que acaba en la etiqueta hreflang, así que un error aquí se propaga a todo el sitio.
  3. 3.En Idiomas → Ajustes elige el formato de URL. "El idioma se establece por el contenido del directorio" es la opción de subcarpeta.
  4. 4.En cada entrada o página usa el panel "Idiomas" del editor para asociar las traducciones entre sí. Sin esa asociación no hay grupo hreflang.
  5. 5.Comprueba en Idiomas → Ajustes que "Ocultar la información del idioma por defecto en la URL" está configurado como quieres: si lo activas, el idioma principal se sirve sin prefijo y el hreflang debe reflejarlo.

Polylang gratuito no traduce productos de WooCommerce. Si tienes tienda, o pasas a Polylang Pro con el conector de WooCommerce, o los productos quedarán fuera del grupo hreflang aunque el resto del sitio esté bien.

Opción 3: Sin plugin de multilingüe

Si las traducciones ya existen como páginas independientes y no quieres montar una infraestructura multilingüe entera, puedes inyectar las etiquetas tú mismo. Tiene sentido con pocas páginas y una estructura estable; deja de tenerlo en cuanto el contenido crece.

La forma limpia es engancharse a wp_head desde el functions.php del tema hijo, con un mapa explícito de traducciones:

php
// functions.php del tema hijo
add_action('wp_head', function () {
    // ID de página => [ código hreflang => URL ]
    $grupos = [
        12 => [
            'es' => 'https://ejemplo.com/servicios/',
            'en' => 'https://ejemplo.com/en/services/',
        ],
        34 => [
            'es' => 'https://ejemplo.com/servicios/',
            'en' => 'https://ejemplo.com/en/services/',
        ],
    ];

    $id = get_queried_object_id();
    if (!isset($grupos[$id])) {
        return;
    }

    foreach ($grupos[$id] as $lang => $url) {
        printf(
            '<link rel="alternate" hreflang="%s" href="%s" />' . "\n",
            esc_attr($lang),
            esc_url($url)
        );
    }
    // x-default apuntando al idioma por defecto
    printf(
        '<link rel="alternate" hreflang="x-default" href="%s" />' . "\n",
        esc_url($grupos[$id]['es'])
    );
});

Fíjate en que cada página del grupo declara el grupo completo, incluida ella misma. Por eso el mapa repite las mismas URLs para los IDs 12 y 34: la autorreferencia y la etiqueta de retorno son obligatorias, y este método las rompe con facilidad si añades una traducción y olvidas actualizar el array.

Nunca metas estas etiquetas con un plugin de "insertar código en el head" que lo aplique a todo el sitio: acabarías declarando el mismo grupo hreflang en páginas que no pertenecen a él, y Google descartaría todas.

Verifica antes de dar por hecho que funciona

Ninguno de los tres métodos te avisa cuando el resultado es incorrecto: el plugin genera etiquetas y da por buena su propia salida. Coge todas las URLs de un mismo grupo —la versión española, la inglesa y cualquier otra— y valídalas juntas. Los fallos de hreflang solo se ven comparando las páginas del grupo entre sí, nunca mirando una sola.

Prueba la herramienta gratis

Analiza tus URLs con Validador Hreflang de iRankly. Sin registro, sin tarjeta.

Usar herramienta gratis

Si usas otra plataforma, o quieres el detalle conceptual de qué hace cada atributo:


Prueba la herramienta gratis

Analiza tus URLs con Validador Hreflang de iRankly. Sin registro, sin tarjeta.

Usar herramienta gratis