- Trạng thái
- Đã giải quyết
- Được báo cáo cho
- WPML Multilingual CMS 4.6.13
- Đã giải quyết trong
- WPML Multilingual CMS 4.7.4
- Plugin/giao diện liên quan
- Elementor
- Thẻ chủ đề
- Compatibility
Tổng quan về lỗi
Khi sử dụng tính năng Display Conditions của Elementor Pro để kiểm soát việc hiển thị của widget, các điều kiện không được áp dụng chính xác trên các trang đã dịch. Cụ thể, các thẻ hoặc chuyên mục trong ngôn ngữ dịch không kích hoạt các điều kiện hiển thị như mong đợi, khiến các phần tử đáng lẽ phải bị ẩn lại vẫn hiển thị.
Giải pháp tạm thời
Đảm bảo bạn đã tạo bản sao lưu toàn bộ trang web trước khi tiếp tục.
- Mở tệp functions.php của giao diện.
- Thêm đoạn mã sau:
/* * 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']); } }