WPML

Ознакомьтесь с полным списком констант и хуков ACF Multilingual (ACFML), а также с примерами их использования в Вашем коде.

Хуки ACF Multilingual (ACFML)

acfml_should_translate_acf_entity

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

Тип: Фильтр

Доступность: ACFML 2.1.4

Параметры:

$shouldTranslate
(bool) (Обязательно) Следует ли переводить поле или группу полей. По умолчанию — true.

$entity
(array) (Обязательно) Переводимая сущность, которая представляет собой массив полей или массив групп.

$entityType
(string) (Необязательно) Тип переводимой сущности. Может быть «field» или «group».

Пример использования хука:

add_filter( 'acfml_should_translate_acf_entity', function( $shouldTranslate, $entity, $entityType ) {
	if ( 'field' === $entityType ) {
		return false;
	}

	return $shouldTranslate;
} );

acfml_field_group_mode_field_translation_preference

Этот фильтр позволяет Вам переопределить настройки перевода по умолчанию для полей ACF, когда группа полей использует режим Одинаковые поля или Разные поля.

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

Тип: Фильтр

Доступность: ACFML 2.0.0

Параметры:

$fieldTranslationPreference (int) (Обязательно) Настройка перевода по умолчанию для поля. Возможные значения:

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

$groupMode (string) (Обязательно) Режим перевода группы полей. Возможные значения: translation или localization.
$field (array) (Обязательно) Массив поля ACF.

Пример использования хука:

add_filter( 'acfml_field_group_mode_field_translation_preference', function( $fieldTranslationPreference, $groupMode, $field ) {
    $fieldType = $field['type'] ?? null;

    if ( 'link' === $fieldType ) {
        return 2; // WPML_TRANSLATE_CUSTOM_FIELD
    }

    return $fieldTranslationPreference;
}, 10, 3 );

Этот пример принудительно делает тип поля link переводимым, переопределяя его настройку по умолчанию copy или copy_once.

Константы ACF Multilingual (ACFML)

ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS

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

Чтобы включить эту функцию, добавьте следующую строку в Ваш файл wp-config.php:

define( 'ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS', false );

Примечания:

  • Если Вы создали задание на перевод до добавления этого кода в Ваш файл wp-config.php, отмените его и создайте новое.
  • При необходимости Вы можете отправить ярлыки полей и варианты выбора на перевод через экран Панель управления переводами.

ACFML_HIDE_FIELD_ANNOTATIONS

К каждому переведенному полю ACF Multilingual добавляет информацию о значении на языке оригинала.

Чтобы удалить эту информацию из переведенных полей, Вы можете добавить следующую строку в файл wp-config.php Вашего сайта:

define( 'ACFML_HIDE_FIELD_ANNOTATIONS', true );

ACFML_REPEATER_SYNC_DEFAULT

Вы можете использовать эту константу, чтобы задать значение по умолчанию для функции синхронизации поля Repeater. По умолчанию установлено значение true. Это означает, что поля Repeater автоматически синхронизируются в переводах. Если Вы установите для этой константы значение false, синхронизация поля Repeater будет отключена.

Вы можете переопределить значение по умолчанию для ACFML_REPEATER_SYNC_DEFAULT в файле functions.php Вашей темы:

define('ACFML_REPEATER_SYNC_DEFAULT', false);

ACFML_SCAN_LOCAL_FIELDS

Установка для этой константы значения false отключает сканирование файлов JSON на наличие локальных полей.

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

Для получения дополнительной информации ознакомьтесь с официальной документацией ACF об использовании локального JSON.

Автор: Amir · Последнее обновление: 30 июня 2026