WPML

Enlaces adhesivos de WPML evita que los enlaces entre páginas y entradas se rompan, incluso si las páginas se mueven o cambian de nombre.


WordPress facilita demasiado el cambio de las direcciones de las páginas, lo que provoca que todos los enlaces entrantes se rompan (error 404). A continuación, se muestran algunas acciones que pueden dar lugar a un error 404:
  • Cambiar la página superior (o padre) de la página
  • Cambiar el slug
  • Cambiar la estructura de enlaces permanentes del sitio

WPML evita que los cambios en las URL rompan los enlaces entrantes. Al crear un enlace, WPML lo convierte automáticamente en un enlace 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 la página. Esto nunca cambiará, sin importar lo que haga.

Luego, cuando se muestra la página, WPML inserta el enlace permanente de la página a la que está enlazando. Siempre que la URL cambie, todas las páginas que la enlazan se actualizarán de inmediato y dirigirán a la dirección correcta.

Las siguientes capturas de pantalla muestran lo que contiene un enlace interno una vez que se activan los Enlaces adhesivos. Haga clic en el enlace en el editor y verá el número de la página, una dirección ?page_id=, en lugar de su enlace permanente.

Enlaces convertidos en adhesivos por WPML vistos en el editor de bloques
Enlaces convertidos en adhesivos por WPML vistos en el editor de bloques
Enlaces convertidos en adhesivos por WPML vistos en el editor clásico
Enlaces convertidos en adhesivos por WPML vistos en el editor clásico

Sus usuarios nunca verán estos enlaces «extraños». En su lugar, WPML los reemplazará con los enlaces permanentes actuales al mostrar las páginas.
Una vez que active el módulo de Enlaces adhesivos, podrá controlar qué cadenas maneja. Para ello, vaya a la página WPML → Enlaces adhesivos.
Enlaces adhesivos antes del procesamiento
Enlaces adhesivos antes del procesamiento

De forma predeterminada, WPML convertirá todos los enlaces del cuerpo de la entrada en enlaces adhesivos. También puede convertir los enlaces de los widgets y de las cadenas en enlaces adhesivos.

WPML le permitirá reemplazar por lotes todos los enlaces normales por enlaces adhesivos. También informará de cualquier enlace roto existente y le ayudará a corregirlo.

Si ha activado los Enlaces adhesivos después de crear contenido, los enlaces de ese contenido existente no se convertirán inmediatamente en adhesivos.

La pantalla del panel de administración de Enlaces adhesivos le indica cuánto contenido puede incluir enlaces normales (no adhesivos). WPML puede escanear ese contenido y convertir todos los enlaces en enlaces adhesivos. Haga clic en el botón Escanear para hacerlo.

Siempre puede devolver sus enlaces a enlaces permanentes normales (no adhesivos) haciendo clic en Revertir URL adhesivas a enlaces permanentes.

Enlazar a páginas en un idioma diferente


A veces, puede que quiera insertar un enlace a una página que está en otro idioma. Dado que Enlaces adhesivos ajusta los enlaces automáticamente, podría impedirle hacer esto y ajustar el enlace para que apunte al mismo idioma en su lugar.

Para poder añadir enlaces a páginas en otros idiomas, debe añadir el siguiente filtro al archivo functions.php de su tema.

Permitir enlaces a páginas en otros idiomas
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, utilice la matriz $blacklist para especificar todos los slugs de URL de las páginas en los idiomas originales a las que quiera enlazar.

En nuestro ejemplo, queremos enlazar a la versión en inglés de las páginas “Documentation” (slug “documentation”) y “Page Builders” (slug “page-builders”), por lo que usamos las dos líneas siguientes:

Ejemplo de especificación de la lista de URL a las que se permite enlazar
$blacklist[] = 'documentation';

$blacklist[] = 'page-builders';

De forma predeterminada, el plugin de Enlaces adhesivos no busca enlaces generados por shortcodes.

Si tiene un shortcode en su página que genera un enlace como ”?page_id=XX“, se mostrará a sus usuarios sin convertirse en un enlace permanente.

Para manejar el contenido de estos shortcodes con Enlaces adhesivos, añada este fragmento a su archivo functions.php:

Manejar enlaces dentro del contenido de un shortcode
if ( class_exists( 'WPML_Sticky_Links' ) ) {
	global $WPML_Sticky_Links;
	add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 );
}

Escrito porAmir