Saltar navegación
Actualizado
junio 12, 2024

WPML Sticky Links evita que se rompan los enlaces entre páginas y entradas, aunque las páginas se muevan y cambien de nombre.

WordPress hace que sea demasiado fácil cambiar las direcciones de las páginas, provocando que todos los enlaces entrantes se rompan (error 404).
Aquí tienes algunas acciones que pueden provocar un error 404:

  • Cambiar el padre de la Página
  • Cambio de slug
  • Cambiar la estructura de enlaces permanentes del sitio

WPML impide que los cambios en las URL rompan los enlaces entrantes.
Cuando creas un enlace, WPML lo convierte automáticamente en adhesivo.
En lugar de almacenar la URL de esa página (en el momento en que se creó el enlace), almacena el número de página.
Esto no puede cambiar nunca, hagas lo que hagas.
Luego, cuando se muestra la página, WPML inserta el enlace permanente de la página a la que enlazas.
Cada vez que cambia la URL, todas las páginas que enlazan con ella se actualizan inmediatamente y enlazarán con la dirección correcta.
Las siguientes capturas de pantalla muestran el aspecto de los enlaces internos en la base de datos, una vez activados los Sticky Links.

Enlaces convertidos en Sticky por WPML vistos dentro del editor de bloque
Enlaces convertidos en Sticky por WPML vistos dentro del editor de bloque
Enlaces convertidos en Sticky por WPML vistos en el editor Clásico
Enlaces convertidos en Sticky por WPML vistos en el editor Clásico

Tus usuarios nunca verán estos enlaces «extraños».
En su lugar, WPML los sustituirá por los enlaces permanentes actuales al mostrar las páginas.

Una vez habilitado el módulo Sticky Links, puedes controlar qué cadenas maneja.
Para ello, ve a la Página WPML Sticky Links .

Enlaces Sticky Links antes del procesamiento
Enlaces Sticky Links antes del procesamiento

Por defecto, WPML convertirá todos los enlaces del cuerpo de la Entrada en enlaces adhesivos.
También puedes convertir enlaces en Widgets y cadenas en enlaces adhesivos.
WPML te permitirá sustituir por lotes todos los enlaces normales por enlaces adhesivos.
También te informará de los enlaces rotos existentes y te ayudará a solucionarlos.
Si has activado Sticky Links después de crear algún contenido, los enlaces de ese contenido existente no se convertirán inmediatamente en enlaces adhesivos.
La pantalla de administración de Sticky Links te indica cuánto contenido puede incluir enlaces normales (no adhesivos).
WPML puede escanear ese contenido y convertir todos los enlaces en enlaces adhesivos.
Haz clic en el botón Escanear para hacerlo.
Siempre puedes devolver tus enlaces a enlaces permanentes normales (no adhesivos) haciendo clic en Revertir URLs adhesivas a enlaces permanentes.

Enlace a páginas en otro idioma

A veces, puede que quieras insertar un enlace a una Página que está en otro idioma.
Como Sticky Links ajusta los enlaces automáticamente, podría impedirte hacerlo y ajustar el enlace para que apunte al mismo idioma en su lugar.
Para poder añadir enlaces a páginas en otros idiomas, debes añadir el siguiente filtro al archivo functions. php de tu tema.

Allow links to pages in other languages
add_filter( 'wpml_sl_blacklist_requests', 'wpml_sl_blacklist_requests', 10, 2 );

function wpml_sl_blacklist_requests( $blacklist, $sitepress ) {
    $blacklist[] = 'documentation';
    return $blacklist;
}

En el código anterior, utiliza la matriz $blacklist para especificar todos los slugs de URL de las páginas en los idiomas originales a las que quieres enlazar.
En nuestro ejemplo, queremos enlazar con la versión en inglés de las páginas «Documentation» (slug «documentation») y «Constructor visual» (slug «page-builders»), por lo que utilizaremos las dos líneas siguientes:

Example of specifying the list of URLs to allow linking to
$blacklist[] = 'documentation';

$blacklist[] = 'page-builders';

Manejo de enlaces dentro del contenido de Shortcode

Por defecto, el plugin Sticky Links no busca enlaces generados por Shortcodes.
Si tienes un Shortcode en tu Página que genera un enlace como «?page_id=XX«, se mostrará a tus usuarios sin convertirse en un enlace permanente.
Para gestionar el contenido de estos Shortcode con Sticky Links, añade este fragmento de código a tu archivo functions.php:

Handle links inside shortcode content
if ( class_exists( 'WPML_Sticky_Links' ) ) {
	global $WPML_Sticky_Links;
	add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 );
}