Cómo asignar el atributo x-default hreflang en WPML

¿Usas el plugin multilingüe WPML y no te implementa el atributo x-default en tus páginas? Hoy te traigo una solución sencilla y rápida 🙂

¡Sigue leyendo!

Trabajando en una web con varios idiomas (multilingüe) detecté que el atributo x-default no estaba implementado en cada una de sus URLs.

La web usa el plugin de traducción WPML, el cual estaba implementando bien las etiquetas hreflang, pero no el atributo x-default. Cabe decir que no es un atributo obligatorio pero sí es muy recomendable ya que se utiliza para indicar qué versión de la página debe mostrarse cuando no existe una coincidencia clara entre los idiomas o las regiones del usuario y las versiones disponibles del sitio web.

Así que investigando y calentándome la cabeza decidí crear un código para forzar la aparición del atributo x-default en todas las páginas.

Código para forzar el atributo x-default con WPML

Pues bien, te ahorro dolores de cabeza y te explico los pasos a seguir que son bastante sencillos. Eso sí, ten en cuenta que cada web es un mundo y puede que el siguiente código no te funcione, pero por lo menos te servirá de base para que lo adaptes a tu proyecto con la ayuda de un programador o bien con Chat GPT.

El siguiente código PHP lo debes pegar en tu archivo functions.php pero te recomiendo que mejor uses un plugin como Code Snippets para evitar problemas. No está de más recordarte que debes realizar las pruebas necesarias en el entorno de prueba o test de tu web ya que algo puede salir mal y acabar rompiendo tu web.

Personalmente, tuve que ir modificando poco a poco este código hasta dar con uno que no rompiera la web y que colocara correctamente el atributo x-default en cada página.

<?php
function add_xdefault_hreflang_tag() {
// Obtener el idioma predeterminado configurado en WPML
$default_language = apply_filters('wpml_default_language', NULL);

if ($default_language) {
// Obtener la URL de la página actual en el idioma predeterminado
$default_url = apply_filters('wpml_permalink', get_permalink(), $default_language);

if ($default_url) {
// Añadir el enlace x-default después de los hreflang
echo '<link rel="alternate" hreflang="x-default" href="' . esc_url($default_url) . '" />' . "\n";
}
}
}

// Incrementa la prioridad a un número más alto para asegurarte de que se ejecute después de otros elementos
add_action('wp_head', 'add_xdefault_hreflang_tag', 1);
?>

Por si tienes curiosidad te explico las líneas más importantes:

  • La 1º línea define una función llamada add_xdefault_hreflang_tag cuyo propósito es agregar una etiqueta con el atributo x-default en la cabecera HTML de la página.
  • La 3º línea utiliza la función apply_filters de WordPress para obtener el idioma predeterminado configurado en el plugin WPML.
  • La 5º línea obtiene la URL de la página actual en el idioma predeterminado.
  • La 11º línea crea el atributo hreflang=»x-default» con la URL del idioma predeterminado.
  • Por último, la línea 16 es necesaria para ordenar que el atributo x-default aparezca en el head e inmediatamente después de la última etiqueta hreflang.

Volviendo al código completo, cuando lo coloques en Code Snippets te quedará así:

captura de pantalla del plugin code snippets con un codigo php personalizado

En la parte de prioridad (esquina derecha) puse 0 para que no interfiriera con la regla de prioridad que inserté directamente en el código (última línea).

Puedes incluir una descripción para recordar qué función hace cada código que guardes en el plugin.

Recuerda guardar los cambios y asegurarte de que el fragmento esté activado y se ejecute en todas las partes.

 

Espero haberte ayudado, si tienes alguna duda déjame un comentario y te responderé encantada.

5 3 votes
¿Te ha gustado este post?
Subscribe
Notify of
guest
0 Comments
el más antiguo
el más nuevo el más votado
Inline Feedbacks
View all comments