Tổng quan về sự cố
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
Sự cố này đã được khắc phục trong WPML Multilingual CMS 4.7.4. Việc cập nhật giải quyết vấn đề này trên trang web của bạn, vì vậy bạn chỉ cần giải pháp tạm thời này nếu chưa thể cập nhật.
Đả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']); } }