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

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

Если Вы используете функцию шаблона цикла Elementor, кнопки не переводятся на фронтенде, даже если они доступны для перевода в Расширенном редакторе переводов.

Обходное решение

Прежде чем продолжить, обязательно сделайте полную резервную копию Вашего сайта.


  1. Откройте файл /wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/class-wpml-elementor-translate-ids.php.

  2. Найдите строку 108.

  3. Замените метод WPML_Elementor_Translate_IDs::translate_global_widget_ids():
    public function translate_global_widget_ids( $data_array, $post_id ) {
    		foreach ( $data_array as &$data ) {
    			if ( isset( $data['elType'] ) && 'widget' === $data['elType'] ) {
    				if ( 'global' === $data['widgetType'] ) {
    					$data['templateID'] = $this->translate_id( $data['templateID'] );
    				} elseif ( 'template' === $data['widgetType'] ) {
    					$data['settings']['template_id'] = $this->translate_id( $data['settings']['template_id'] );
    				}
    			}
    			$data['elements'] = $this->translate_global_widget_ids( $data['elements'], $post_id );
    		}
    
    		return $data_array;
    	}

    На:

    public function translate_global_widget_ids( $data_array, $post_id ) {
            foreach ( $data_array as &$data ) {
                if ( isset( $data['elType'] ) && 'widget' === $data['elType'] ) {
                    if ( 'global' === $data['widgetType'] ) {
                        $data['templateID'] = $this->translate_id( $data['templateID'] );
                    } elseif ( 'template' === $data['widgetType'] || 'loop-grid' === $data['widgetType'] || 'loop-carousel' === $data['widgetType']) {
                        $data['settings']['template_id'] = $this->translate_id( $data['settings']['template_id'] );
                    } 
                }
                $data['elements'] = $this->translate_global_widget_ids( $data['elements'], $post_id );
            }
      
            return $data_array;
        }


  4. Переведите шаблон цикла Elementor в разделе WPMLУправление переводами.

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