WPML
סטטוס
נפתר על ידי המפתח
נפתר בגרסה
Bricks 2.0
תוסף/ערכת עיצוב קשורים
Bricks
תגיות נושא
Compatibility

סקירה כללית של התקלה

בערכת העיצוב Bricks, כאשר תנאי תבנית מוגדר להצגה רק עבור מונחים מסוימים (לדוגמה, קטגוריה מסוימת), התנאי אינו חל כראוי בתבניות המתורגמות.

פתרון עוקף

אנא ודא שיש לך גיבוי מלא של האתר לפני שתמשיך.

חלק 1


  • עבור אל WPML > הגדרות > שדות מותאמים אישית.

  • חפש את השדה _bricks_template_settings.

  • הגדר אותו כהעתקה

חלק 2


  • פתח את קובץ functions.php של ערכת העיצוב שלך.

  • הוסף את הקוד הבא:
    /**
     * WPML Workaround for compsupp-7667
     */
    add_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10, 4);
    function wpml_compsupp7667_bricks_translate_template_conditions($value, $post_id, $key, $single) {
        if ($key !== '_bricks_template_settings') {
            return $value;
        }
    
        // Remove filter temporarily to avoid infinite loop
        remove_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10);
        
        // Get all meta values
        $raw_values = get_post_meta($post_id, $key, false);
        
        // Add filter back
        add_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10, 4);
    
        // If we have no values, return the original
        if (empty($raw_values)) {
            return $value;
        }
    
        // Process the array structure
        foreach ($raw_values as &$settings) {
            if (is_array($settings) && isset($settings['templateConditions'])) {
                foreach ($settings['templateConditions'] as &$condition) {
                    if (!empty($condition['archiveTerms']) && is_array($condition['archiveTerms'])) {
                        foreach ($condition['archiveTerms'] as &$termString) {
                            if (strpos($termString, '::') !== false) {
                                list($taxonomy, $termId) = explode('::', $termString);
                                $translatedId = apply_filters('wpml_object_id', intval($termId), $taxonomy, true);
                                if ($translatedId) {
                                    $termString = $taxonomy . '::' . $translatedId;
                                }
                            }
                        }
                    }
                }
            }
        }
    
        return $raw_values;
    }

כל התקלות הידועות →