Salta la navigazione

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

Problema:
Il cliente sta cercando di tradurre i campi ACF utilizzati in un filtro e incontra problemi con la visualizzazione delle traduzioni quando cambia la lingua del sito, e sta riscontrando problemi con il codice che sta utilizzando.
Soluzione:
Abbiamo suggerito al cliente di utilizzare una versione modificata del suo codice per assicurarsi che le traduzioni dei termini vengano visualizzate correttamente.
Abbiamo anche consigliato al cliente di assicurarsi di avere un backup completo del sito prima di apportare modifiche e di testare il codice su un server di staging prima di applicarlo al sito di produzione.

Se la soluzione proposta non dovesse essere più rilevante a causa di aggiornamenti o non fosse applicabile al tuo caso, ti invitiamo a consultare la pagina dei problemi noti, verificare la versione della soluzione permanente e assicurarti di avere installato le ultime versioni di temi e plugin. Se il problema persiste, ti raccomandiamo di aprire un nuovo ticket di supporto nel forum di supporto WPML.

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 1 risposta, ha 2 voci.

Ultimo aggiornamento da Marsel Nikolli 1 anno, 4 mese fa.

Assistito da: Marsel Nikolli.

Autore Messaggi
Febbraio 6, 2024 a 5:05 pm #15273221

stefanoS-32

Sto cercando di tradurre i campi acf del filtro in oggetto, lo sviluppatore mi ha consigliato di utilizzare la funzione wpc_terms_before_display, ho creato questa parte di codice:

add_filter('wpc_terms_before_display', 'translate_acf_fields', 10, 2);

function translate_acf_fields($terms, $filter) {
$fields_to_translate = array('tipologia', 'regione', 'cucina', 'origine', 'stagioni', 'informazioni', 'ingredienti', 'e_ora_di', 'Formaggio');
if (function_exists('get_field_object') && in_array($filter['e_name'], $fields_to_translate)) {
$newTerms = [];

foreach ($terms as $k => $term) {
$field_value = $term->name;

if ($field_value !== false) {
if (function_exists('icl_translate')) {
$current_language = apply_filters('wpml_current_language', NULL);
$field_value_translation = icl_translate('acf', $filter['e_name'], $field_value, $current_language);
$term->name = $field_value_translation;
}
}

$newTerms[$k] = $term;
}
return $newTerms;
}

return $terms;
}

Ma i campi risultano in italiano anche quando la lingua selezionata è inglese.
Tutti gli ACF sono stati già tradotti,potete darmi una mano a capire cosa sbaglio?

Grazie

Febbraio 7, 2024 a 11:25 am #15276317

Marsel Nikolli

Buongiorno,

Grazie per aver contattato il supporto WPML. Sarò felice di aiutarti.

Puoi provare a usare questa versione modificata del tuo codice e verificare se aiuta a risolvere il tuo problema:


add_filter('wpc_terms_before_display', 'translate_acf_fields', 10, 2);

function translate_acf_fields($terms, $filter) {
    $fields_to_translate = array('tipologia', 'regione', 'cucina', 'origine', 'stagioni', 'informazioni', 'ingredienti', 'e_ora_di', 'Formaggio');

    if (function_exists('get_field_object') && in_array($filter['e_name'], $fields_to_translate)) {
        $newTerms = [];

        foreach ($terms as $k => $term) {
            $field_value = $term->name;

            if ($field_value !== false && function_exists('icl_translate')) {
                $current_language = apply_filters('wpml_current_language', NULL);
                
                $field_key = 'term_' . $term->term_id;
                $field_name = $filter['e_name'];
                
                $field_object = get_field_object($field_name, $field_key);
                if($field_object) {
                    $field_key = $field_object['key'];
                    $field_value_translation = icl_translate('acf', $field_key, $field_value, $current_language);
                    $term->name = $field_value_translation;
                }
            }

            $newTerms[$k] = $term;
        }

        return $newTerms;
    }

    return $terms;
}

Si prega di notare che la programmazione personalizzata è al di fuori dell'ambito del forum di supporto, il codice sopra è solo un suggerimento/esempio che funziona solo come guida per ottenere ciò di cui hai bisogno.

* Nota: Assicurati di avere un backup completo del tuo sito web prima di apportare qualsiasi aggiornamento/modifica al tuo sito web. Suggeriamo di provare se il codice funziona su un server di staging prima di utilizzarlo in un sito di produzione, al fine di prevenire possibili perdite di dati o interruzioni del sito.

Saluti,
Marsel

Febbraio 7, 2024 a 12:20 pm #15276560

stefanoS-32

Ho fatto qualche modifica al tuo codice, ti ringrazio perchè mi hai messo sulla strada giusta.

GRAZIE!