Узнайте, как задать настройки перевода для произвольных полей с помощью файла wpml-config.xml. Задайте параметры перевода, такие как translate и copy, и добавьте дополнительные атрибуты.
Настройка параметров перевода для произвольных полей
WPML предоставляет четыре параметра перевода для произвольных полей:
| Действие | Описание | Отображается в ATE? |
|---|---|---|
| Перевести | Делает значение произвольного поля доступным для перевода | Да |
| Копировать | Копирует значение произвольного поля с языка по умолчанию на дополнительный язык, сохраняя их синхронизацию | Нет |
| Копировать один раз | Копирует значение произвольного поля с языка по умолчанию на дополнительный язык без сохранения синхронизации | Нет |
| Игнорировать | Предотвращает копирование значения произвольного поля на дополнительный язык | Нет |
Пример добавления произвольных полей в конфигурационный файл языков
<wpml-config>
<custom-fields>
<custom-field action="copy">quantity</custom-field>
<custom-field action="translate">custom-title</custom-field>
<custom-field action="copy">weight</custom-field>
<custom-field action="copy-once">bg-color</custom-field>
<custom-field action="translate">custom-description</custom-field>
<custom-field action="ignore">date-added</custom-field>
</custom-fields>
</wpml-config>Добавление атрибутов для произвольных полей
Атрибуты label и group
WPML позволяет Вам добавлять атрибуты, которые отображаются в Расширенном редакторе переводов. К ним относятся:
- style — отображение одной строки (line), текстовой области (textarea) или WYSIWYG-редактора (visual)
- label — отображает метку (label) рядом с полем
- group — указывает, к какой группе относится произвольное поле. Если поле находится в группе:
- Поле удаляется из раздела произвольных полей
- Поле добавляется в раздел соответствующей группы
Пример атрибутов произвольных полей
<wpml-config>
<custom-fields>
<custom-field action="translate" style="line" label="Title">custom-title</custom-field>
<custom-field action="translate" style="textarea" label="Description">custom-description</custom-field>
<custom-field action="translate" style="visual" label="Some content" group="Custom group">custom-wysiwyg</custom-field>
</custom-fields>
</wpml-config>Вот как эти атрибуты будут выглядеть в Расширенном редакторе переводов:

Атрибут encode
Вы также можете добавить необязательные атрибуты encode, чтобы изменить кодировку со значения по умолчанию (no — без кодировки). Атрибут encoding принимает следующие значения:
- json
- base64
- urlencode
Если Вы хотите использовать несколько кодировок, разделите значения запятой:
Пример добавления произвольных полей в конфигурационный файл языков для изменения кодировки
<wpml-config>
<custom-fields>
<custom-field action="translate" encoding="json,base64">keywords</custom-field>
</custom-fields>
</wpml-config>Атрибут перевода ссылок
Если Ваше произвольное поле содержит ссылку, Вы можете использовать атрибут translate_link_target, чтобы заставить WPML проверять и корректировать ссылки в произвольном поле. Чтобы этот атрибут работал, убедитесь, что ссылка обернута в теги <a>.
Пример принудительной корректировки ссылок в произвольном поле с помощью WPML
<wpml-config>
<custom-fields>
<custom-field action="translate" translate_link_target="1">name_of_the_acf_field</custom-field>
</custom-fields>
</wpml-config>По умолчанию WPML переводит все подключи в произвольных полях. Чтобы обойти это, укажите, какие подключи следует переводить.
Пример кода для перевода подключей в произвольных полях
<wpml-config>
<custom-fields>
<custom-field action="translate">with_attributes</custom-field>
<custom-field action="translate">with_deep_attributes</custom-field>
<custom-field action="translate">no_attributes</custom-field>
</custom-fields>
<custom-fields-texts>
<key name="with_attributes">
<key name="attribute1" />
<key name="attribute2" />
</key>
<key name="with_deep_attributes">
<key name="attribute1" />
<key name="attribute2">
<key name="level1">
<key name="level2">
</key>
</key>
</key>
</key>
</custom-fields-texts>
</wpml-config>Подстановочные знаки
Вы также можете использовать подстановочные знаки так же, как они используются для текстов администратора:
- Совпадение всех подполей, начинающихся с title-, с помощью кода:
<key name="title-*" /> - Совпадение всех подполей (обычно используется для совпадения с индексом массива) с помощью кода:
<key name="*" /> - Чтобы получить
[{"title":"First title"},{"title":"Second title"}], используйте код
Пример конфигурационного файла с подстановочными знаками
<wpml-config>
<custom-fields-texts>
<key name="key-name">
<key name="*">
<key name="title" />
</key>
</key>
</custom-fields-texts>
</wpml-config>Автоматическое преобразование ID в произвольных полях записей
Начиная с версии WPML 4.8, Вы можете объявлять ID, расположенные в произвольных полях записей. WPML заменяет эти ID на их переведенные версии на фронтенде.
Вы можете сделать это только тогда, когда параметром перевода является Copy (то есть при использовании <custom-field action="copy">).
В разделе custom-fields Вашего файла wpml-config.xml используйте:
- type — чтобы указать, на какой объект идет ссылка, например, post-ids
- sub-type (необязательно) — если Вы хотите объявить слаг типа записи
WPML может обнаруживать и преобразовывать ID в следующих форматах:
- Одиночный ID (например, 123)
- Список ID, разделенных запятыми (например, «123,456,789»)
- Массив (и закодированный массив) ID (например, [123,456,789])
Пример объявления ID в произвольных полях
<custom-fields> <custom-field action="copy" type="post-ids" sub-type="product">custom_field_with_id</custom-field> </custom-fields>
Когда ID вложены в раздел custom-fields-texts на подуровне, WPML обнаружит и преобразует их независимо от настройки перевода поля (copy, translate и т. д.).
Пример объявления ID во вложенных произвольных полях
<wpml-config>
<custom-fields-texts>
<key name="custom_field_with_nested_ids">
<key name="custom_field_nested_key_with_ids" type="post-ids" sub-type="product" />
<key name="custom_field_nested_key_with_ids_with_wildcard_*" type="post-ids" sub-type="product" />
<key name="custom_field_nested_key_with_subkey">
<key name="custom_field_nested_key_with_subkey_with_ids" type="post-ids" sub-type="product" />
</key>
</key>
</custom-fields-texts>
</wpml-config>Используя тот же синтаксис type и sub-type, Вы можете объявлять ID в текстах администратора (таблица wp_options).
Настройка параметров перевода для произвольных полей терминов таксономии
Чтобы перевести произвольные поля терминов таксономии, Вам нужно указать имя поля и действие, которое должен выполнить WPML: translate, copy, copy-once, ignore.
Вложите эту разметку в тег wpml-config.
Вы можете задать следующие параметры перевода для произвольных полей терминов:
- translate: позволяет Вашему пользователю перевести значение произвольного термина. Эти термины отображаются на экране Редактор переводов и могут быть переведены вручную или автоматически, либо отправлены другим переводчикам.
- copy: копирует значение произвольного термина с языка по умолчанию на дополнительные языки. Это означает, что обновленное значение произвольного термина на языке по умолчанию всегда будет копироваться на дополнительный язык. Произвольные термины с параметром copy не отображаются на экране Редактор переводов.
- copy-once: копирует значение произвольного термина на дополнительный язык в процессе начального перевода. Произвольные термины, использующие действие copy-once, не будут отображаться на экране Редактор переводов. Однако пользователь может изменить значение произвольного термина на дополнительном языке, чтобы оно отличалось от языка по умолчанию, используя экран редактирования записи.
- ignore: исключает произвольный термин из копирования на дополнительный язык.
Пример добавления произвольных терминов в конфигурационный файл языков
<wpml-config>
<custom-term-fields>
<custom-term-field action="copy">term_meta_A</custom-term-field>
<custom-term-field action="translate">term_meta_B</custom-term-field>
<custom-term-field action="ignore">term_meta_C</custom-term-field>
<custom-term-field action="copy-once">term_meta_D</custom-term-field>
</custom-term-fields>
</wpml-config>Автоматическое преобразование ID, хранящихся в произвольных полях терминов таксономии
Вы можете сделать это только тогда, когда для поля задано значение Copy (то есть при использовании <custom-term-field action="copy">).
Так же, как и с произвольными полями записей, Вы можете объявлять ID объектов, содержащиеся в произвольных полях таксономии. Затем WPML автоматически преобразует их в переведенные версии.
В разделе custom-term-fields используйте:
- type — чтобы указать, на какой объект идет ссылка, например, post-ids или taxonomy-ids
- sub-type (необязательно) — если Вы хотите объявить конкретную сущность
Пример объявления ID в произвольных полях терминов
<wpml-config>
<custom-term-fields>
<custom-term-field action="copy" type="post-ids" sub-type="product">custom_term_field_with_id</custom-term-field>
</custom-term-fields>
</wpml-config>Дополнительные ресурсы
Чтобы узнать больше о файле wpml-config.xml, посетите руководство Конфигурационные файлы языков.
Для настройки других элементов с помощью файла wpml-config.xml ознакомьтесь с нашими дополнительными руководствами:
- Перевод пользовательских шорткодов с помощью WPML
- Регистрация контента конструкторов страниц для перевода
- Регистрация пользовательских виджетов конструктора страниц для перевода
- Регистрация произвольных терминов, Types и таксономий как переводимых
- Как сделать пользовательские блоки Gutenberg переводимыми
- Перевод текстов, которые темы и плагины сохраняют в wp_options
- Настройка переключателя языков WPML с помощью конфигурационного файла WPML