Salta la navigazione
Aggiornato
Giugno 7, 2024

WPML Sticky Links impedisce che i link tra pagine e post si interrompano, anche se le pagine si spostano e vengono rinominate.

Con WordPress è fin troppo facile cambiare gli indirizzi delle pagine, causando l’interruzione di tutti i link in entrata (errore 404). Ecco alcune azioni che possono causare un errore 404:

  • Cambiare il genitore della Pagina
  • Modifica dello slug
  • Modifica della struttura dei permalink del sito

WPML impedisce che le modifiche agli URL interrompano i link in entrata. Quando crei un link, WPML lo rende automaticamente appiccicoso. Invece di memorizzare l’URL di quella pagina (al momento della creazione del link), memorizza il numero di pagina. Questo non potrà mai cambiare, qualunque cosa tu faccia.

Poi, quando la pagina viene visualizzata, WPML inserisce il permalink della pagina che stai linkando. Ogni volta che l’URL cambia, tutte le pagine che lo linkano si aggiornano immediatamente e rimandano all’indirizzo corretto.

Le schermate seguenti mostrano come appaiono i link interni nel database, una volta abilitati gli Sticky Links.

Gli Sticky Links vengono visualizzati da WPML all'interno dell'editor a blocchi
Gli Sticky Links vengono visualizzati da WPML all’interno dell’editor a blocchi
Gli Sticky Links vengono visualizzati nell'editor classico da WPML.
Gli Sticky Links vengono visualizzati nell’editor classico da WPML.

I tuoi utenti non vedranno mai questi “strani” link. Invece, WPML li sostituirà con i permalink attuali quando visualizzerà le Pagine.

Una volta attivato il modulo Sticky Links, puoi controllare quali stringhe gestisce. Per farlo, vai alla pagina WPML Sticky Links .

Sticky Links prima dell'elaborazione
Sticky Links prima dell’elaborazione

Di default, WPML trasforma tutti i link nel corpo del post in sticky Links. Puoi anche trasformare i link nei Widget e nelle stringhe in link adesivi.

WPML ti consentirà di sostituire in batch tutti i link normali con degli sticky Links. Inoltre, segnala eventuali link non funzionanti e aiuta a risolverli.

Se hai abilitato gli Sticky Links dopo aver creato un contenuto, i link presenti nel contenuto esistente non vengono immediatamente trasformati in link adesivi.

La schermata di amministrazione Sticky Links ti dice quanti contenuti possono includere link normali (non appiccicosi). WPML può analizzare i contenuti e convertire tutti i link in sticky Links. Clicca sul pulsante Scansione per farlo.

Puoi sempre riportare i tuoi link a permalink normali (non appiccicosi) cliccando su Riporta gli URL appiccicosi a permalink.

Link a pagine in una lingua diversa da quella italiana

A volte potresti voler inserire un link a una pagina in un’altra lingua. Poiché Sticky Links regola i link automaticamente, potrebbe impedirti di farlo e regolare il link in modo che punti alla stessa lingua.

Per poter aggiungere link alle pagine in altre lingue, devi aggiungere il seguente filtro al file functions.php del 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;
}

Nel codice precedente, usa l’array $blacklist per specificare tutti gli slug URL delle pagine nelle lingue originali che vuoi linkare.

Nel nostro esempio, vogliamo linkare la versione inglese delle pagine “Documentazione” (slug “documentation”) e “Costruttori di pagine” (slug “page-builders”), quindi utilizziamo le due righe seguenti:

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

$blacklist[] = 'page-builders';

Di default, il plugin Sticky Links non cerca i link generati dagli Shortcode.

Se nella tua Pagina c’è uno Shortcode che genera un link come “?page_id=XX“, questo verrà visualizzato dagli utenti senza essere convertito in un permalink.

Per gestire il contenuto di questi Shortcode con Sticky Links, aggiungi questo snippet al tuo file 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 );
}