WPML
Статус
Решено
Решено в
WPML Multilingual CMS 4.7.4
Связанный плагин/тема
Elementor
Теги темы
Compatibility

Обзор проблемы

При использовании Loop Grid в 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']);
    }

Все известные проблемы →