WPML

Перед началом работы

Установите и активируйте следующие плагины:

  • Advanced Custom Fields или ACF Pro.
  • WPML и WPML Перевод строк.
  • ACFML (дополнение, которому посвящена эта страница).

Ваши группы полей уже должны быть настроены в ACF. Вы можете изменить настройки перевода для каждого поля постфактум, поэтому порядок действий не имеет значения. Настройте группы полей, а затем вернитесь к ACFML.

Выбор режима перевода для каждой группы полей

Не все группы полей ACF ведут себя одинаково при переводе. ACFML предлагает три режима для каждой группы полей, которые задаются в ACF → Группы полей в разделе Настройка многоязычного контента:

Одинаковые поля для всех языков

Типичная настройка для большинства сайтов с ACF. Переводите значения полей на каждый язык, при этом структура остается неизменной. Классический пример — страница Наша команда. Ваша команда одинакова на всех языках, поэтому имя и биография каждого участника переводятся для каждого языка, а структура полей остается прежней. Вы вводите данные команды на исходном языке, затем отправляете запись на перевод через WPML → Переводы → Панель управления; переведенные значения возвращаются привязанными к тем же полям.

Разные поля для разных языков

Используйте, когда на каждом языке отображается принципиально разный контент в одной и той же группе полей. Классический случай — компания, проводящая локализованные мероприятия. На английской странице Мероприятия показаны мероприятия для англоязычной аудитории, на французской — для франкоязычной. Установите для группы полей значение Разные поля для разных языков, затем откройте запись, которую хотите локализовать → в блоке «Языки» справа нажмите значок плюса для языка перевода → откроется пустой черновик с пустыми произвольными полями → заполните значения для конкретного языка и опубликуйте.

Экспертный режим

Используйте, когда нужна комбинация: одни поля переводятся для каждого языка, другие остаются неизменными, третьи копируются один раз, а затем различаются. Выберите Экспертный режим в настройках группы полей и задайте параметры для каждого поля. Пример Мероприятий со смешанным поведением: для названия и описания установлено значение Перевести; для цены, даты и адреса — Копировать.

Настройки перевода для каждого типа полей ACF

Каждое поле в группе полей имеет одну из четырех настроек перевода:

  • Перевести. Значение поля переводится для каждого языка.
  • Копировать. Значение поля синхронизируется на всех языках; достаточно отредактировать его один раз, и изменение применится во всех языках.
  • Копировать один раз. Значение поля служит основой для перевода, после чего каждую языковую версию можно редактировать независимо.
  • Не переводить. Поле игнорируется при переводе.

Когда Вы выбираете Одинаковые поля для всех языков или Разные поля для разных языков, каждое поле получает разумную настройку по умолчанию в зависимости от его типа. В таблицах ниже показаны эти значения по умолчанию. Используйте Экспертный режим, чтобы переопределить их для отдельных полей, или фильтр acfml_field_group_mode_field_translation_preference, чтобы переопределить значение по умолчанию для типа поля на всем сайте (см. Хуки для разработчиков в нестандартных случаях ниже).

Повторитель и гибкое содержание — копировать или копировать один раз

Для полей повторителя и гибкого содержания Вы сначала выбираете один из двух вариантов поведения на уровне строк, и только потом вступают в силу настройки вложенных полей:

  • Копировать. Одинаковый макет и количество строк на всех языках. Переводчики видят одни и те же строки; вложенные поля переводятся в соответствии с их собственными настройками.
  • Копировать один раз. После первоначального копирования в каждом языке могут быть свой макет и свое количество строк.

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

Базовые поля

ТипОдинаковые поля для всех языковРазные поля для разных языков
ТекстПеревестиПеревести
Текстовая областьПеревестиПеревести
ЧислоКопироватьКопировать один раз
ДиапазонКопироватьКопировать один раз
EmailКопироватьКопировать один раз
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, чтобы админ-панель распознала их:

  1. Перейдите в ACF → Инструменты.
  2. Прокрутите до Translate ACF Local JSON and PHP-Registered Fields.
  3. В разделе Sync Translation Preferences for Local Fields выберите Sync once now и нажмите Применить.

WPML считывает настройки из Ваших определений PHP и сохраняет их. Синхронизация выполняется один раз, когда Вы ее запускаете, а не при каждой загрузке страницы.

Если Вы используете функцию Local JSON в ACF для обмена группами полей между сайтами, ACFML автоматически записывает настройки перевода в файлы JSON. Экспортируйте файл JSON с одного сайта, импортируйте его на другой, и целевой сайт подхватит настройки, как только ACFML будет активен на обоих сайтах.

Перевод меток полей ACF

Метки полей ACF — это названия, которые идентифицируют каждое произвольное поле в редакторе WordPress и на фронтенде (например, Номер телефона, Адрес). Они переводятся отдельно от значений полей и находятся в WPML Перевод строк, а не в задании на перевод записи.

Чтобы отправить метки полей на перевод:

  1. Откройте WPML → Переводы → Панель управления.
  2. Разверните раздел ACF Field Group.
  3. Выберите элемент Field Group Labels для группы полей, которую Вы хотите перевести.
  4. Выберите метод перевода (PTC, Ваш переводчик или Переводить самому) и отправьте.

Переведенные метки автоматически появляются на фронтенде после завершения перевода.

Перевод вариантов выбора полей ACF

Поля выбора (Выбор, Флажок, Переключатель, Группа кнопок) содержат собственные метки вариантов (например, Маленький / Средний / Большой). Они тоже хранятся рядом с метками полей, а не внутри перевода записи. Отправьте их таким же образом:

  1. Откройте WPML → Переводы → Панель управления.
  2. Разверните раздел ACF Field Group.
  3. Выберите группу полей, значения выбора которой Вы хотите перевести.
  4. Выберите метод перевода и отправьте.

Перевод страниц параметров ACF

Страницы параметров ACF (экраны глобальных настроек, такие как Контактные данные, Настройки шапки, Ссылки в футере) переводятся как отдельный тип объекта, отдельно от записей:

  1. Откройте WPML → Переводы → Панель управления.
  2. Разверните раздел ACF Options.
  3. Выберите страницу параметров, которую Вы хотите перевести.
  4. Выберите метод перевода и отправьте.

Значения страницы параметров для каждого языка появляются автоматически, когда 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