WPML
Status
Gelöst
Gemeldet für
WPML Multilingual CMS 4.6.13
Gelöst in
WPML Multilingual CMS 4.7.4
Zugehöriges Plugin/Theme
Elementor
Themen-Tags
Compatibility

Übersicht über das Problem

Wenn Sie die Funktion Elementor Pros Display Conditions verwenden, um die Sichtbarkeit von Widgets zu steuern, werden die Bedingungen auf übersetzten Seiten nicht korrekt angewendet. Insbesondere lösen Schlagwörter oder Kategorien in der übersetzten Sprache die Anzeigebedingungen nicht wie erwartet aus, was dazu führt, dass Elemente, die verborgen sein sollten, sichtbar bleiben.

Problemumgehung

Bitte stellen Sie sicher, dass Sie über ein vollständiges Backup Ihrer Website verfügen, bevor Sie fortfahren.


  • Öffnen Sie die Datei functions.php Ihres Themes.

  • Fügen Sie das folgende Snippet hinzu:
    /*
    * 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']);
        }
    }

Alle bekannten Probleme →