WPML

Aperçu de l’anomalie

Lorsque vous utilisez la fonctionnalité Conditions d’affichage d’Elementor Pro pour contrôler la visibilité des widgets, les conditions ne s’appliquent pas correctement sur les pages traduites. Plus précisément, les étiquettes ou les catégories dans la langue traduite ne déclenchent pas les conditions d’affichage comme prévu, ce qui fait que les éléments qui devraient être masqués restent visibles.

Solution de contournement

Ce problème est résolu dans WPML Multilingual CMS 4.7.4. La mise à jour résout le problème sur votre site, vous n’avez donc besoin de cette solution de contournement que si vous ne pouvez pas encore mettre à jour.

Veuillez vous assurer d’avoir une sauvegarde complète de votre site avant de continuer.

  • Ouvrez le fichier functions.php de votre thème.
  • Ajoutez l’extrait suivant :
    /*
    * 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']);
        }
    }

Toutes les anomalies connues

Vous rencontrez toujours ce problème ?

Si la mise à jour ne résout pas le problème, faites une demande d’assistance et nous l’examinerons avec vous.