WPML

Чтобы зарегистрировать пользовательские виджеты конструкторов страниц для перевода, Вам необходимо использовать файл 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

Как только Вы получите эту информацию, Вы можете перейти непосредственно к регистрации виджета для перевода.

Чтобы проверить свою работу, откройте страницу, на которой используется виджет, в редакторе переводов. Зарегистрированные Вами поля отображаются там по именам, а рядом с ними находятся тексты виджета. Незарегистрированный виджет ничего не добавляет в задание на перевод, поэтому, если ни один из его текстов не отображается, регистрация не вступила в силу.

Регистрация простых виджетов

В следующем видео показан пример регистрации простого виджета 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>

Давайте разберем структуру приведенного примера:

  1. Начните с тега <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.
  2. Добавьте Ваши виджеты:
    • <widget name="widget_name">, где widget_name — это имя, используемое для регистрации виджета в конструкторе страниц.
    • <conditions> (необязательно): в разделе условий Вы добавляете условие с ключом, равным имени виджета. Это можно использовать, когда имя виджета отличается от ключа виджета в данных, но обычно это не требуется.
  1. Добавьте поля виджетов, обернув их в тег <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:

Структура данных виджета 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, и каждое из них имеет собственную метку, что упрощает идентификацию и перевод каждого поля:

Поля виджета hotspot в Расширенном редакторе переводов
Поля виджета hotspot в Расширенном редакторе переводов

Регистрация других типов контента конструкторов страниц

Ознакомьтесь с нашей документацией по регистрации контента конструкторов страниц в конфигурационном файле языка, чтобы узнать больше о регистрации строк, шорткодов и многом другом.

Дополнительные ресурсы

Чтобы узнать больше о файле wpml-config.xml, изучите руководство Конфигурационные файлы языка.

Для настройки других элементов с помощью файла wpml-config.xml изучите наши дополнительные руководства:

Автор:Amir