Чтобы зарегистрировать пользовательские виджеты конструкторов страниц для перевода, Вам необходимо использовать файл wpml-config.xml. Следуйте этому руководству, чтобы узнать, как его использовать.
Это руководство предназначено для разработчиков, которые создают темы оформления и плагины или добавляют на свой сайт пользовательский код для конструкторов страниц.
Если Вы используете сторонний конструктор страниц и не можете перевести пользовательские виджеты на своем сайте, пожалуйста, обратитесь в службу поддержки WPML.
Конструкторы страниц, такие как Elementor (открывается в новой вкладке), Beaver Builder (открывается в новой вкладке), SiteOrigin (открывается в новой вкладке) и Cornerstone (открывается в новой вкладке), поставляются с набором собственных виджетов. Эти виджеты по умолчанию без проблем работают с WPML.
Иногда Вы можете создавать пользовательские виджеты, предназначенные для использования с этими или другими конструкторами страниц.
Пользовательский виджет — это любой уникальный дополнительный виджет, который не поставляется в комплекте с конструктором страниц. Они могут быть созданы Вашей командой разработчиков, сторонними разработчиками или добавляться другими плагинами и темами оформления.
Пользовательским виджетом также является любой виджет, который добавляется плагинами-дополнениями, разработанными сторонними разработчиками специально для конструктора страниц, например Elementor.
Когда нужно регистрировать пользовательские виджеты для перевода?
Вам нужно зарегистрировать пользовательский виджет для перевода:
- Если этот виджет изначально не предоставляется конструктором страниц
- Если Вы создали и добавили его через другой плагин или тему оформления
- Если он разработан для Ваших сайтов на WordPress или определенного конструктора страниц Вашей командой или сторонними разработчиками
В прошлом наиболее распространенным способом регистрации пользовательских виджетов для перевода было использование пользовательского PHP-кода. Теперь Вы можете легко зарегистрировать виджет для перевода с помощью wpml-config.xml, конфигурационного файла WPML.
Регистрация пользовательских виджетов Elementor для перевода в WPML 4.9+
В WPML 4.9 и более новых версиях WPML автоматически распознает пользовательские виджеты Elementor и делает их переводимыми. Однако он может зарегистрировать строки, которые Вы не хотите переводить.
Именно поэтому мы настоятельно рекомендуем Вам по-прежнему вручную настраивать файл wpml-config.xml, как описано на этой странице. Это даст Вам возможность контролировать, какие поля будут переводимыми.
Как зарегистрировать пользовательские виджеты Elementor и блоки Gutenberg для перевода с помощью плагина Multilingual Tools
Наш плагин Multilingual Tools включает в себя генератор конфигураций WPML – Config Generator для виджетов Elementor и блоков Gutenberg. Эта функция позволяет добавить на страницу любые пользовательские виджеты Elementor или блоки Gutenberg, которые Вы хотите зарегистрировать для перевода. Затем она автоматически генерирует первую версию необходимого Вам XML-кода.
Узнайте, как зарегистрировать пользовательские виджеты Elementor для перевода и как сделать блоки Gutenberg переводимыми.
Как найти информацию о регистрации виджета
Чтобы иметь возможность зарегистрировать пользовательский виджет в файле wpml-config.xml, сначала необходимо найти базовую информацию о нем: название типа виджета и названия полей, которые Вы хотите перевести.
Добавьте виджет отдельно на новую страницу и сохраните ее. Elementor хранит виджеты страницы в метаполе записи _elementor_data, а такой плагин, как JSM Show Post Metadata (открывается в новой вкладке), показывает это поле в метабоксе внизу редактора страниц, поэтому Вы можете прочитать там данные виджета.
В этих данных:
- widgetType — это имя, которое нужно использовать в атрибуте name виджета.
- Ключи в разделе settings — это поля виджета. Ключ, содержащий текст, который Вы хотите перевести, например title, — это имя поля для регистрации.
- Повторяющееся поле содержит массив строк. Ключ, содержащий этот массив, например contents, — это имя для «items of».

Как только Вы получите эту информацию, Вы можете перейти непосредственно к регистрации виджета для перевода.
Чтобы проверить свою работу, откройте страницу, на которой используется виджет, в редакторе переводов. Зарегистрированные Вами поля отображаются там по именам, а рядом с ними находятся тексты виджета. Незарегистрированный виджет ничего не добавляет в задание на перевод, поэтому, если ни один из его текстов не отображается, регистрация не вступила в силу.
Регистрация простых виджетов
В следующем видео показан пример регистрации простого виджета Elementor:
Следующий пример иллюстрирует, как зарегистрировать простой виджет. Под простым виджетом здесь подразумевается виджет, в котором нет повторяющихся полей.
<wpml-config> <elementor-widgets> <widget name="heading"> <conditions> <condition key="widgetType">heading</condition> </conditions> <fields> <field type="Heading" editor_type="LINE">title</field> <field type="Heading: Link URL" editor_type="LINK">link>url</field> </fields> </widget> </elementor-widgets> </wpml-config>
Давайте разберем структуру приведенного примера:
- Начните с тега
<elementor-widgets>. Это сообщает WPML, какие виджеты конструктора страниц Вы собираетесь зарегистрировать. Это может быть один из следующих вариантов:<elementor-widgets>: это нужно использовать, если Вы используете Elementor, Elementor PRO или любое другое дополнение для Elementor.<beaver-builder-widgets>: это нужно использовать, если Вы используете Beaver Builder Lite, премиум-версию Beaver Builder или любое другое дополнение для Beaver Builder.<siteorigin-widgets>: это нужно использовать, если Вы используете конструктор страниц SiteOrigin.<cornerstone-widgets>: а это нужно использовать для конструктора страниц Cornerstone, который поставляется с темой оформления X или PRO.
- Добавьте Ваши виджеты:
<widget name="widget_name">, где widget_name — это имя, используемое для регистрации виджета в конструкторе страниц.<conditions>(необязательно): в разделе условий Вы добавляете условие с ключом, равным имени виджета. Это можно использовать, когда имя виджета отличается от ключа виджета в данных, но обычно это не требуется.
- Добавьте поля виджетов, обернув их в тег
<fields>:- field: ID поля. Это тот же ID, который используется при добавлении элемента управления с помощью функции Control_stack::add_control.
- type (необязательно): тип поля. Это текст, отображаемый в Расширенном редакторе переводов или Классическом редакторе переводов WPML, чтобы помочь переводчику понять, какое поле переводится.
- editor_type (необязательно): это тип текстового поля, используемого в Классическом редакторе переводов WPML. Допустимые значения: LINE, AREA, LINK и VISUAL. По умолчанию используется LINE, если значение отсутствует.
- key_of (необязательно): используется только для тегов <field>, которые содержат массив внутри тега <fields-in-item>.
Вы можете использовать эти элементы для регистрации простого виджета с любым количеством полей.
Регистрация полей с ID записей или таксономий
В разделе выше Вы узнали, что атрибут type обычно используется для отображения описательного текста в Редакторе переводов.
Однако, когда поля Вашего виджета хранят ID записей или ID таксономий (например, выбранные изображения, похожие записи или выбранные категории), Вы используете специальные значения, которые запускают автоматическое преобразование:
type="post-ids"— для полей, содержащих ID записейtype="term-ids"— для полей, содержащих ID таксономий/элементов
Когда Вы используете эти значения types:
- Поле не будет отображаться в редакторе переводов
- WPML автоматически преобразует ID так, чтобы они указывали на соответствующий переведенный контент
- Поддерживаются как одиночные ID, так и списки ID через запятую
Пример:
<wpml-config>
<elementor-widgets>
<widget name="the-widget-name">
<fields>
<field type="post-ids" sub-type="attachment">image_id</field>
<field type="post-ids" sub-type="post">selected_posts</field>
<field type="term-ids" sub-type="category">category_filter</field>
</fields>
</widget>
</elementor-widgets>
</wpml-config>
В этом примере необязательный атрибут sub-type указывает точный тип записи или таксономию, которые преобразуются:
- Для
type="post-ids": используйтеsub-type="attachment",sub-type="post",sub-type="page"или слаг Вашего произвольного типа записи - Для
type="term-ids": используйтеsub-type="category",sub-type="post_tag"или слаг Вашей произвольной таксономии
Добавление sub-type повышает производительность, позволяя избежать лишних запросов к базе данных для определения типа контента.
Дополнительные примеры смотрите в конфигурационном файле Elementor (открывается в новой вкладке), выполнив поиск по слову post-ids.
Регистрация виджетов с повторяющимися полями
В следующем видео показан пример регистрации расширенного виджета Elementor с повторяющимися полями:
Для виджетов с повторяющимися полями необходимо обернуть поля в тег <fields-in-item items_of="tabs"> (где tabs — это имя виджета с повторяющимися полями). Посмотрите этот пример:
<widget name="accordion"> <fields-in-item items_of="tabs"> <field type="Accordion: Title" editor_type="LINE">tab_title</field> <field type="Accordion: Content" editor_type="VISUAL">tab_content</field> </fields-in-item> </widget>
В некоторых случаях виджет может иметь несколько повторяющихся полей. В качестве примера рассмотрим следующую структуру данных виджета Table из Ultimate Addons for Elementor:

Чтобы зарегистрировать этот виджет, ознакомьтесь со следующим примером:
<widget name="uael-table"> <fields-in-item items_of="table_content"> <field type="The Cell text" editor_type="LINE">cell_text</field> </fields-in-item> <fields-in-item items_of="table_headings"> <field type="The Heading text" editor_type="LINE">heading_text</field> </fields-in-item> </widget>
Регистрация виджетов как с простыми, так и с повторяющимися полями
Обратите внимание, что виджеты могут иметь оба типа: fields и fields-in-item. Посмотрите этот пример для виджета, который использует оба типа:
<widget name="price-table"> <fields> <field type="Price Table: Heading" editor_type="LINE">heading</field> <!-- ... --> </fields> <fields-in-item items_of="features_list"> <field type="Price table: text" editor_type="LINE">item_text</field> </fields-in-item> </widget>
Группировка полей для лучшей организации
Чтобы улучшить наглядность и организацию Вашей XML-конфигурации, Вы можете добавлять префикс с именем группы к меткам полей. Рассмотрим этот пример виджета hotspot:
<widget name="hotspot">
<fields-in-item items_of="hotspot">
<field type="Hotspot: Label">hotspot_label</field>
<field type="Hotspot: URL" key_of="hotspot_link">url</field>
<field type="Hotspot: Content" editor_type="VISUAL">hotspot_tooltip_content</field>
</fields-in-item>
</widget>
Здесь к каждому полю в виджете hotspot добавляется префикс в виде метки Hotspot:. Этот префикс также появляется в Расширенном редакторе переводов: поля виджета находятся в блоке Hotspot, и каждое из них имеет собственную метку, что упрощает идентификацию и перевод каждого поля:

Регистрация других типов контента конструкторов страниц
Ознакомьтесь с нашей документацией по регистрации контента конструкторов страниц в конфигурационном файле языка, чтобы узнать больше о регистрации строк, шорткодов и многом другом.
Дополнительные ресурсы
Чтобы узнать больше о файле wpml-config.xml, изучите руководство Конфигурационные файлы языка.
Для настройки других элементов с помощью файла wpml-config.xml изучите наши дополнительные руководства:
- Регистрация контента конструкторов страниц для перевода
- Перевод пользовательских шорткодов с помощью WPML
- Настройка параметров перевода для произвольных полей с помощью конфигурационного файла WPML
- Регистрация произвольных элементов таксономий, типов и таксономий в качестве переводимых
- Как сделать пользовательские блоки Gutenberg переводимыми
- Перевод текстов, которые тема оформления и плагины сохраняют в wp_options
- Настройка переключателя языков WPML с помощью конфигурационного файла WPML