Vai al contenuto Vai alla barra laterale

Questo thread è stato risolto. Ecco una descrizione del problema e della soluzione.

Problem:
You need to set different labels and URLs for each language in the 'Return to the shop' snippet in a WooCommerce site using WPML.
Solution:
We recommend using one of the WPML hooks to dynamically change the URL based on the current language. You can use the

wpml_current_language

hook to detect the current language and then set the URL accordingly. Here is an example of how you can implement this:

function wc_empty_cart_redirect_url() {<br />  if(ICL_LANGUAGE_CODE == 'en') {<br />    return 'custom-url-EN';<br />  } elseif(ICL_LANGUAGE_CODE == 'fr') {<br />    return 'custom-url-FR';<br />  } else {<br />    return 'custom-url-DE';<br />  }<br />}<br />add_filter('woocommerce_return_to_shop_redirect', 'wc_empty_cart_redirect_url');

For more details, check the documentation on wpml_current_language and wpml_object_id.

If this solution does not apply to your case, or if it seems outdated, we highly recommend checking related known issues at https://wpml.org/known-issues/, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. If you still need assistance, please open a new support ticket.

Questo è il forum di assistenza tecnica di WPML, il plug-in multilingue di WordPress.

La sua lettura è permessa a tutti, ma la pubblicazione è riservata esclusivamente ai clienti di WPML. Il team di WPML risponde sul forum 6 giorni su 7, 22 ore su 24.

Etichettato: 

Questo ticket contiene 8 risposte, ha 0 voices.

Ultimo aggiornamento da Laura 2 mese, 2 settimana fa.

Assistito da: Laura.

Autore Post
Luglio 9, 2025 alle 8:46 am #17217693

Andrea Notari

Contesto del problema:
I am working on a site in development and need to have a different label and URL for each language (I use 3 languages) for the 'Return to the shop' snippet. I am using the following code: function wc_empty_cart_redirect_url() { return 'custom-url-EN'; } add_filter( 'woocommerce_return_to_shop_redirect', 'wc_empty_cart_redirect_url' );

Sintomi:
I have not found any documentation that truly helps.

Domande:
How can I set a different label and URL for each language in the 'Return to the shop' snippet?

Luglio 9, 2025 alle 11:53 am #17219065

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Salve,

grazie per averci contattato.

Devi usare uno degli hook di WPML, per esempio wpml_current_language o wpml_object_id.

Luglio 9, 2025 alle 12:32 pm #17219314

Andrea Notari

Buongiorno.

Grazie per la risposta.

Puoi farmi un esempio o verificare quello che ho scritto (php non è il mio linguaggio).

function wc_empty_cart_redirect_url() {
$redirect_url = '#';

if ( defined( 'ICL_LANGUAGE_CODE' ) ) {
switch ( ICL_LANGUAGE_CODE ) {
case 'en': // EN translation
$redirect_url = '#'; // EN URL
break;
case 'fr': // French translation
$redirect_url = '#'; // FR URL
break;
}
}

return $redirect_url;
}
add_filter( 'woocommerce_return_to_shop_redirect', 'wc_empty_cart_redirect_url' );

Luglio 9, 2025 alle 12:35 pm #17219329

Andrea Notari

Oppure forse intendevi questo?

function wc_empty_cart_redirect_url() {

$current_lang = apply_filters( 'wpml_current_language', null );

switch ( $current_lang ) {
case 'en': // EN
return '/en/shop';
case 'fr': // FR
return '/fr/shop';
default:
return '/shop'; // Default IT URL
}
}
add_filter( 'woocommerce_return_to_shop_redirect', 'wc_empty_cart_redirect_url' );

Luglio 9, 2025 alle 3:33 pm #17220184

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

ICL_LANGUAGE_CODE è una funzione deprecata e non andrebbe mai usata.

Il secondo snippet dovrebbe funzionare.

Tieni presente che il supporto non copre il codice custom come questo, posso solo darti delle indicazioni su come raggiungere il risultato voluto ma non possiamo scrivere del codice ex-novo.

Luglio 10, 2025 alle 8:47 am #17222516

Andrea Notari

Grazie Laura.

Vanno bene le tue indicazioni ma ti chiedo di aiutarmi su 2 cose:

1) Per tua esperienza che differenza esiste tra l'uso di wpml_current_language o wpml_object_id? Nel mio caso quale conviene?

2) È possibile che usando wpml_current_language (o attivando lo snippet) avvenga in modo automatico l'aggiornamento dei permalink? Chiedo questo perché è successo.

Sì, il secondo snippet funziona correttamente.

Grazie.

Luglio 10, 2025 alle 12:03 pm #17223736

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

wpml_current_language ritorna la lingua che stai usando in quel momento (la lingua corrente, appunto) mentre wpml_object_id ritorna l'ID del post nella lingua scelta, quindi fanno proprio 2 cose diverse.

Se wpml_current_language funziona, usa quello.

WPML normalmente aggiorna i permalink, sì.

Luglio 10, 2025 alle 12:46 pm #17223888

Andrea Notari

Scusami Laura.

> WPML normalmente aggiorna i permalink, sì.

Cosa intendi esattamente?
Per quali eventi WPML aggiorna autonomamente i permalink?
Puoi documentarmi questa cosa per capire.

Grazie.

Luglio 10, 2025 alle 1:54 pm #17224334

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

WPML aggiorna i permalink dei link interni, se il contenuto viene tradotto. Non c'è una documentazione.

Nel tuo caso, lo snippet rileva qual è la lingua in uso e ritorna il permalink che hai indicato nello snippet stesso, non c'è nessun aggiornamento dei permalink.