Panoramica del problema
Quando si utilizza la funzionalità Condizioni di visualizzazione di Elementor Pro per controllare la visibilità dei widget, le condizioni non si applicano correttamente sulle pagine tradotte. In particolare, i tag o le categorie nella lingua tradotta non attivano le condizioni di visualizzazione come previsto, facendo sì che gli elementi che dovrebbero essere nascosti rimangano visibili.
Soluzione alternativa
Questo problema è stato risolto in WPML Multilingual CMS 4.7.4. L'aggiornamento risolve il problema sul tuo sito, quindi hai bisogno di questa soluzione alternativa solo se non puoi ancora aggiornare.
Assicurati di avere un backup completo del tuo sito prima di procedere.
- Apri il file functions.php del tuo tema.
- Aggiungi il seguente snippet:
/* * WPML Workaround for compsupp-7656 */ add_filter( 'elementor/frontend/before_render', 'wpml_compsupp7656_filter_e_display_conditions_from_widget'); function wpml_compsupp7656_filter_e_display_conditions_from_widget($element) { $settings = $element->get_settings(); if (array_key_exists('e_display_conditions', $settings) && !empty($settings['e_display_conditions'])) { foreach ($settings['e_display_conditions'] as $key => $condition_json) { $condition = json_decode($condition_json, true); foreach ($condition as &$condition_group) { foreach ($condition_group as &$single_condition) { if (isset($single_condition['condition']) && strpos($single_condition['condition'], 'in_') === 0) { $taxonomy_key = substr($single_condition['condition'], 3); // Remove 'in_' prefix if (isset($single_condition[$taxonomy_key])) { foreach ($single_condition[$taxonomy_key] as &$term) { if (isset($term['id'])) { $term_obj = get_term($term['id']); if ($term_obj && !is_wp_error($term_obj)) { $term['id'] = apply_filters('wpml_object_id', $term['id'], $term_obj->taxonomy, true); } } } } } } } // Encode the modified condition back to JSON $settings['e_display_conditions'][$key] = json_encode($condition); } // Update the element's settings with the modified conditions $element->set_settings('e_display_conditions', $settings['e_display_conditions']); } }