---
title: "Cómo eliminar la etiqueta hreflang en URLs con la meta tag noindex en WordPress"
description: "Eliminar la etiqueta hreflang en páginas de WordPress que contienen la meta etiqueta noindex puede parecer una contradicción innecesaria para muchos desarrolladores, pero algunos responsables de SEO p..."
url: https://wpdirecto.com/como-eliminar-la-etiqueta-hreflang-en-urls-con-la-meta-tag-noindex-en-wordpress/
date: 2025-05-03
modified: 2025-05-04
author: "David Carrero Fernández-Baillo"
image: https://wpdirecto.com/wp-content/uploads/2025/04/hreflang-wordpress.jpg
categories: ["Actualidad"]
tags: ["hreflang", "noindex"]
type: post
lang: es
---

# Cómo eliminar la etiqueta hreflang en URLs con la meta tag noindex en WordPress

Eliminar la [etiqueta `hreflang`](https://wpdirecto.com/tag/hreflangs/) en páginas de WordPress que contienen la meta etiqueta `noindex` puede parecer una contradicción innecesaria para muchos desarrolladores, pero algunos responsables de SEO prefieren mantener un control absoluto sobre lo que los motores de búsqueda interpretan. Aunque ambas etiquetas no son incompatibles entre sí, es posible aplicar una solución técnica eficaz para quien desee suprimir la referencia de idioma en páginas que no deben ser indexadas.

### ¿Por qué eliminar hreflang en páginas noindex?

Primero, conviene entender el contexto:

- **La etiqueta `hreflang`** es una indicación que informa a los motores de búsqueda del idioma y la región de una URL, facilitando la identificación de versiones traducidas de un mismo contenido.
- **La meta etiqueta `noindex`** es una directriz explícita para que una URL no sea indexada por los motores de búsqueda.

En principio, ambas pueden coexistir sin generar conflictos. Google y otros buscadores interpretan correctamente este escenario y no suelen penalizarlo. Sin embargo, hay quien prefiere evitar confusiones, mantener un código limpio o seguir lineamientos estrictos de SEO.

### Enfoque técnico: detectar y eliminar `hreflang` si hay `noindex`

Dado que los plugins de SEO y multilenguaje no suelen comunicarse entre sí de forma nativa, la única manera fiable de eliminar las etiquetas `hreflang` en presencia de `noindex` es interceptando la salida HTML y modificándola.

#### ✅ Opción 1: Solución para WPML (plugin multilenguaje)

Este código elimina las etiquetas `hreflang` solo si la página contiene la etiqueta `noindex` y WPML está activo:

```
// Inicia el buffer si WPML está activo
add_action('wp_head', function () {
    if (!function_exists('wpml_get_active_languages')) {
        return;
    }
    ob_start();
}, 0);
// Finaliza el buffer y filtra hreflang si hay noindex
add_action('wp_head', function () {
    $content = ob_get_contents();
    if (strpos($content, 'noindex') !== false) {
        $content = preg_replace('/<link rel="alternate" hreflang="[^"]+" href="[^"]+" \/>/', '', $content);
    }
    ob_clean();
    echo $content;
    ob_end_flush();
}, 1000);
```

**Qué hace este código:**

- Verifica si WPML está activo.
- Usa `ob_start()` para capturar el contenido del \`\`.
- Si detecta `noindex`, elimina las etiquetas `hreflang` con una expresión regular.
- Finalmente, imprime el HTML filtrado.

#### ✅ Opción 2: Solución universal (funciona sin WPML)

Si no usas WPML, esta versión genérica es más adecuada:

```
// Inicia el buffer
add_action('wp_head', function () {
    ob_start();
}, 0);
// Elimina hreflang si hay noindex
add_action('wp_head', function () {
    $content = ob_get_contents();
    if (strpos($content, 'noindex') !== false) {
        $content = preg_replace('/<link rel="alternate" hreflang="[^"]+" href="[^"]+" \/>[\r\n]*/', '', $content);
    }
    ob_clean();
    echo $content;
    ob_end_flush();
}, 1000);
```

**Ventajas:**

- No depende de ningún plugin.
- Funciona en cualquier tipo de página.
- Compatible con cualquier etiqueta `hreflang` generada directamente en el HTML.

---

### 🧪 Alternativa con JavaScript

Si los métodos en PHP fallan —por ejemplo, debido al orden en que se inyecta el contenido o por cachés—, una solución de cliente es eliminar los elementos con JavaScript:

```
add_action('wp_footer', function () {
    ?>
    <script>
    (function() {
        const robotsMeta = document.querySelector('meta[name="robots"][content*="noindex"]');
        if (robotsMeta) {
            document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(link => link.remove());
        }
    })();
    </script>
    <?php
});
```

**Importante**: esta opción no evita que los buscadores vean las etiquetas `hreflang`, ya que el script se ejecuta tras cargar el HTML. Solo se recomienda como último recurso visual o si se quiere ocultar el contenido para usuarios (no para rastreadores).

---

### ¿Cuándo puede no funcionar el código?

1. **Caché activada**: asegúrate de vaciar todas las cachés del sitio antes de verificar.
2. **La página no tiene realmente `noindex`**: comprueba el HTML para confirmar.
3. **Prioridad incorrecta**: podrías subir la prioridad a `9999` si otro código sobreescribe después.
4. **Formato distinto de `hreflang`**: revisa el código fuente y ajusta la expresión regular si es necesario.

---

### ¿Dónde insertar este código?

Puedes aplicarlo de estas maneras:

- En el archivo `functions.php` de tu tema hijo.
- Mediante un plugin de fragmentos como Code Snippets.
- Creando tu propio plugin personalizado.

---

### Conclusión

Eliminar las etiquetas `hreflang` en URLs con meta `noindex` no es obligatorio ni necesariamente recomendable, pero es viable y factible si forma parte de tu estrategia SEO o de una petición concreta del cliente. WordPress ofrece la flexibilidad suficiente para llevarlo a cabo, ya sea mediante un enfoque basado en PHP, compatible con cualquier plugin, o incluso con soluciones en JavaScript.

Y como buena práctica: prueba siempre en un entorno de staging antes de aplicar este tipo de cambios en producción.

Fuente: [AyudaWP](https://ayudawp.com/eliminar-hreflang-urls-noindex/)
