WPML
Trạng thái
Đã được giải quyết bởi nhà phát triển
Đã giải quyết trong
Bricks 2.0
Plugin/giao diện liên quan
Bricks
Thẻ chủ đề
Compatibility

Tổng quan về lỗi

Trong giao diện Bricks, khi một điều kiện của template được thiết lập để chỉ hiển thị cho các thuật ngữ cụ thể (ví dụ: một chuyên mục cụ thể), điều kiện này không được áp dụng chính xác trong các template đã dịch.

Giải pháp tạm thời

Vui lòng đảm bảo đã sao lưu toàn bộ trang web của bạn trước khi tiếp tục.

Phần I


  • Truy cập WPML > Cài đặt > Trường tùy chỉnh.

  • Tìm trường _bricks_template_settings.

  • Đặt thành Sao chép

Phần II


  • Mở tệp functions.php của theme.

  • Thêm mã sau:
    /**
     * 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;
    }

Tất cả các lỗi đã ghi nhận →