Как переводить произвольные поля ACF в WordPress — группы полей, повторители, страницы параметров
Узнайте, как перевести каждое произвольное поле ACF на Вашем сайте WordPress на все языки, на которых говорят Ваши посетители. В этом руководстве рассматриваются группы полей, повторители, гибкое содержание, поля изображений, страницы параметров и сами метки полей. ACFML включает поля ACF и ACF Pro в рабочий процесс перевода WPML, чтобы они переводились вместе с контентом Ваших записей.
Перед началом работы
Установите и активируйте следующие плагины:
- Advanced Custom Fields или ACF Pro.
- WPML и WPML Перевод строк.
- ACFML (дополнение, которому посвящена эта страница).
Ваши группы полей уже должны быть настроены в ACF. Вы можете изменить настройки перевода для каждого поля постфактум, поэтому порядок действий не имеет значения. Настройте группы полей, а затем вернитесь к ACFML.
Выбор режима перевода для каждой группы полей
Не все группы полей ACF ведут себя одинаково при переводе. ACFML предлагает три режима для каждой группы полей, которые задаются в ACF → Группы полей в разделе Настройка многоязычного контента:
Одинаковые поля для всех языков
Типичная настройка для большинства сайтов с ACF. Переводите значения полей на каждый язык, при этом структура остается неизменной. Классический пример — страница Наша команда. Ваша команда одинакова на всех языках, поэтому имя и биография каждого участника переводятся для каждого языка, а структура полей остается прежней. Вы вводите данные команды на исходном языке, затем отправляете запись на перевод через WPML → Переводы → Панель управления; переведенные значения возвращаются привязанными к тем же полям.
Разные поля для разных языков
Используйте, когда на каждом языке отображается принципиально разный контент в одной и той же группе полей. Классический случай — компания, проводящая локализованные мероприятия. На английской странице Мероприятия показаны мероприятия для англоязычной аудитории, на французской — для франкоязычной. Установите для группы полей значение Разные поля для разных языков, затем откройте запись, которую хотите локализовать → в блоке «Языки» справа нажмите значок плюса для языка перевода → откроется пустой черновик с пустыми произвольными полями → заполните значения для конкретного языка и опубликуйте.
Экспертный режим
Используйте, когда нужна комбинация: одни поля переводятся для каждого языка, другие остаются неизменными, третьи копируются один раз, а затем различаются. Выберите Экспертный режим в настройках группы полей и задайте параметры для каждого поля. Пример Мероприятий со смешанным поведением: для названия и описания установлено значение Перевести; для цены, даты и адреса — Копировать.
Настройки перевода для каждого типа полей ACF
Каждое поле в группе полей имеет одну из четырех настроек перевода:
- Перевести. Значение поля переводится для каждого языка.
- Копировать. Значение поля синхронизируется на всех языках; достаточно отредактировать его один раз, и изменение применится во всех языках.
- Копировать один раз. Значение поля служит основой для перевода, после чего каждую языковую версию можно редактировать независимо.
- Не переводить. Поле игнорируется при переводе.
Когда Вы выбираете Одинаковые поля для всех языков или Разные поля для разных языков, каждое поле получает разумную настройку по умолчанию в зависимости от его типа. В таблицах ниже показаны эти значения по умолчанию. Используйте Экспертный режим, чтобы переопределить их для отдельных полей, или фильтр acfml_field_group_mode_field_translation_preference, чтобы переопределить значение по умолчанию для типа поля на всем сайте (см. Хуки для разработчиков в нестандартных случаях ниже).
Повторитель и гибкое содержание — копировать или копировать один раз
Для полей повторителя и гибкого содержания Вы сначала выбираете один из двух вариантов поведения на уровне строк, и только потом вступают в силу настройки вложенных полей:
- Копировать. Одинаковый макет и количество строк на всех языках. Переводчики видят одни и те же строки; вложенные поля переводятся в соответствии с их собственными настройками.
- Копировать один раз. После первоначального копирования в каждом языке могут быть свой макет и свое количество строк.
Выберите Копировать, когда структура одинакова на всех языках (в большинстве случаев). Выберите Копировать один раз, когда языковые версии структурно различаются (например, разный список мероприятий для каждого языка).
Базовые поля
| Тип | Одинаковые поля для всех языков | Разные поля для разных языков |
|---|---|---|
| Текст | Перевести | Перевести |
| Текстовая область | Перевести | Перевести |
| Число | Копировать | Копировать один раз |
| Диапазон | Копировать | Копировать один раз |
| Копировать | Копировать один раз | |
| URL | Копировать | Копировать один раз |
| Пароль | Копировать | Копировать один раз |
Поля контента
| Тип | Одинаковые поля для всех языков | Разные поля для разных языков |
|---|---|---|
| Изображение | Копировать | Копировать один раз |
| Файл | Копировать | Копировать один раз |
| Редактор WYSIWYG | Перевести | Перевести |
| oEmbed | Копировать | Копировать один раз |
| Галерея | Копировать | Копировать один раз |
Поля выбора
| Тип | Одинаковые поля для всех языков | Разные поля для разных языков |
|---|---|---|
| Выбор | Копировать | Копировать один раз |
| Флажок | Копировать | Копировать один раз |
| Переключатель | Копировать | Копировать один раз |
| Группа кнопок | Копировать | Копировать один раз |
| Истина / Ложь | Копировать | Копировать один раз |
Поля jQuery
| Тип | Одинаковые поля для всех языков | Разные поля для разных языков |
|---|---|---|
| Карта Google | Копировать | Копировать один раз |
| Выбор даты | Копировать | Копировать один раз |
| Выбор даты и времени | Копировать | Копировать один раз |
| Выбор времени | Копировать | Копировать один раз |
| Выбор цвета | Копировать | Копировать один раз |
Поля макета
| Тип | Одинаковые поля для всех языков | Разные поля для разных языков |
|---|---|---|
| Сообщение | Перевести | Перевести |
| Аккордеон | Копировать | Копировать один раз |
| Вкладка | Копировать | Копировать один раз |
| Группа | Копировать | Копировать один раз |
| Повторитель | Копировать | Копировать один раз |
| Гибкое содержание | Копировать | Копировать один раз |
| Клон | Копировать | Копировать один раз |
Реляционные поля
| Тип | Одинаковые поля для всех языков | Разные поля для разных языков |
|---|---|---|
| Ссылка | Копировать | Копировать один раз |
| Объект записи | Копировать | Копировать один раз |
| Ссылка на страницу | Копировать | Копировать один раз |
| Взаимоотношение | Копировать | Копировать один раз |
| Таксономия | Копировать | Копировать один раз |
| Пользователь | Копировать | Копировать один раз |
Настройка параметров для полей, зарегистрированных в PHP или JSON
Группы полей ACF, зарегистрированные в PHP (через acf_add_local_field_group()) или с помощью функции Local JSON в ACF, не получают настройки перевода из админ-панели, поскольку она ими не управляет. Задавайте настройки там же, где Вы регистрируете поля.
Для каждого поля в определении группы полей добавьте ключ wpml_cf_preferences. Его значение — это целое число, которое соответствует четырем настройкам перевода: 0 для Не переводить (WPML игнорирует поле), 1 для Копировать (значение синхронизируется на всех языках), 2 для Перевести (значение отправляется на перевод) и 3 для Копировать один раз (значение копируется в новые переводы, после чего каждый язык можно редактировать независимо).
Минимальный пример:
acf_add_local_field_group( [
'key' => 'group_1',
'title' => 'My Group',
'fields' => [
[
'key' => 'field_1',
'label' => 'Sub Title',
'name' => 'sub_title',
'type' => 'text',
'wpml_cf_preferences' => 2, // Translate.
],
],
// ...rest of the field-group config
] );
После того как Вы определите поля в коде, синхронизируйте настройки с WPML, чтобы админ-панель распознала их:
- Перейдите в ACF → Инструменты.
- Прокрутите до Translate ACF Local JSON and PHP-Registered Fields.
- В разделе Sync Translation Preferences for Local Fields выберите Sync once now и нажмите Применить.
WPML считывает настройки из Ваших определений PHP и сохраняет их. Синхронизация выполняется один раз, когда Вы ее запускаете, а не при каждой загрузке страницы.
Если Вы используете функцию Local JSON в ACF для обмена группами полей между сайтами, ACFML автоматически записывает настройки перевода в файлы JSON. Экспортируйте файл JSON с одного сайта, импортируйте его на другой, и целевой сайт подхватит настройки, как только ACFML будет активен на обоих сайтах.
Перевод меток полей ACF
Метки полей ACF — это названия, которые идентифицируют каждое произвольное поле в редакторе WordPress и на фронтенде (например, Номер телефона, Адрес). Они переводятся отдельно от значений полей и находятся в WPML Перевод строк, а не в задании на перевод записи.
Чтобы отправить метки полей на перевод:
- Откройте WPML → Переводы → Панель управления.
- Разверните раздел ACF Field Group.
- Выберите элемент Field Group Labels для группы полей, которую Вы хотите перевести.
- Выберите метод перевода (PTC, Ваш переводчик или Переводить самому) и отправьте.
Переведенные метки автоматически появляются на фронтенде после завершения перевода.
Перевод вариантов выбора полей ACF
Поля выбора (Выбор, Флажок, Переключатель, Группа кнопок) содержат собственные метки вариантов (например, Маленький / Средний / Большой). Они тоже хранятся рядом с метками полей, а не внутри перевода записи. Отправьте их таким же образом:
- Откройте WPML → Переводы → Панель управления.
- Разверните раздел ACF Field Group.
- Выберите группу полей, значения выбора которой Вы хотите перевести.
- Выберите метод перевода и отправьте.
Перевод страниц параметров ACF
Страницы параметров ACF (экраны глобальных настроек, такие как Контактные данные, Настройки шапки, Ссылки в футере) переводятся как отдельный тип объекта, отдельно от записей:
- Откройте WPML → Переводы → Панель управления.
- Разверните раздел ACF Options.
- Выберите страницу параметров, которую Вы хотите перевести.
- Выберите метод перевода и отправьте.
Значения страницы параметров для каждого языка появляются автоматически, когда ACF считывает параметр в контексте этого языка.
Распространенные ошибки
- Метки полей выглядят непереведенными. Они находятся в Перевод строк, а не в переводе записи. Отправьте элемент Field Group Labels для группы полей из панели управления (см. раздел Перевод меток полей ACF выше).
- Значения выбора выглядят непереведенными. Та же ситуация. Отправьте группу полей из раздела ACF Field Group панели управления, чтобы в перевод попали и значения вариантов.
- Строки повторителя рассинхронизируются. Вероятно, для поля установлено значение Копировать один раз, тогда как Копировать сохранило бы выравнивание строк. Откройте группу полей → переключите поведение поля повторителя на Копировать.
- Условная логика ведет себя неожиданно. Когда для управляющего поля установлено значение Копировать или Не переводить, условное поведение следует за значением на исходном языке во всех переводах. Установите для управляющего поля значение Перевести, если его значение должно отличаться в зависимости от языка.
- Локальные поля (зарегистрированные в PHP) игнорируют настройки перевода, заданные в админ-панели. Задайте ключ
wpml_cf_preferencesв самом определении группы полей и выполните синхронизацию из ACF → Инструменты. Процедура описана в разделе Настройка параметров для полей, зарегистрированных в PHP или JSON выше. В ACFML 2.2.0 (февраль 2026 года) добавлена полная поддержка локальных полей; в старых версиях здесь были ограничения.
Хуки для разработчиков в нестандартных случаях
Для программного управления (исключение определенных полей из перевода, переопределение настройки по умолчанию для типа поля на всем сайте, скрытие аннотаций от переводчиков или исключение строк группы полей из заданий на перевод записей) ACFML предоставляет два фильтра и четыре константы. Полный справочник с примерами кода находится в Справочнике по хукам и константам ACFML.
Автор: Amir · Последнее обновление: 2 июля 2026 года
Автор: Amir · Последнее обновление: 2 июля 2026