- 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']); } }