WPML

نظرة عامة على المشكلة

عند استخدام ميزة شروط العرض الخاصة بـ Elementor Pro للتحكم في ظهور الودجت، لا تُطبَّق الشروط بشكل صحيح على الصفحات المترجمة. وتحديداً، لا تُفعِّل الوسوم أو التصنيفات في اللغة المترجمة شروط العرض كما هو متوقع، مما يتسبب في بقاء العناصر التي يجب أن تكون مخفية ظاهرة.

حل بديل مؤقت

تم إصلاح هذه المشكلة في WPML Multilingual CMS 4.7.4. يحل التحديث المشكلة على موقعك، لذا لا تحتاج إلى هذا الحل البديل المؤقت إلا إذا لم تتمكن من التحديث بعد.

يرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.

  • افتح ملف functions.php الخاص بقالبك.
  • أضف المقتطف التالي:
    /*
    * 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']);
        }
    }

جميع المشكلات المعروفة

هل ما زلت تواجه هذه المشكلة؟

إذا لم يحل التحديث المشكلة، فاطرح استفسار الدعم وسنبحث في الأمر معك.