WPML
상태
해결됨
해결된 버전
WPML Multilingual CMS 4.7.4
관련 플러그인/테마
Elementor
주제 태그
Compatibility

문제 개요

대체 템플릿과 함께 Elementor Pro의 루프 그리드를 사용할 때, 루프 템플릿 내에서 번역된 비동적 콘텐츠가 프런트엔드에서 올바른 언어로 표시되지 않습니다. 이 문제는 대체 템플릿 ID가 번역되지 않기 때문에 발생합니다.

임시 해결 방법

진행하기 전에 사이트의 전체 백업을 반드시 생성하세요.


  • 테마의 functions.php 파일을 여세요.

  • 다음 코드를 추가하세요:
    // WPML Workaround for compsupp-6865
    add_filter('elementor/frontend/before_render', 'wpml_compsupp6865_filter_loop_grid_widget');
    
    function wpml_compsupp6865_filter_loop_grid_widget($element) {
        if ('loop-grid' !== $element->get_name()) {
            return $element;
        }
    
        $settings = $element->get_settings();
    
        if (!isset($settings['alternate_templates']) || !is_array($settings['alternate_templates'])) {
            return $element;
        }
    
        $alternate_settings = $settings['alternate_templates'];
    
        foreach ($alternate_settings as $key => $value) {
            if (empty($value['template_id']) || !is_numeric($value['template_id'])) {
                continue;
            }
    
            // Use apply_filters to adjust template_id for WPML
            $id = apply_filters('wpml_object_id', $value['template_id'], get_post_type($value['template_id']), true);
            if (!is_numeric($id)) {
                continue;
            }
    
            // Update the template_id in alternate_settings
            $alternate_settings[$key]['template_id'] = $id;
        }
    
        // Update the settings with the modified alternate_templates
        $settings['alternate_templates'] = $alternate_settings;
        $element->set_settings('alternate_templates', $settings['alternate_templates']);
    }

알려진 모든 문제 →