WPML

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

Хуки ACF Multilingual (ACFML)

acfml_should_translate_acf_entity

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

Тип: фильтр

Доступность: 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;
}, 10, 3 );

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 ( 'url' === $fieldType ) {
        return 1; // WPML_COPY_CUSTOM_FIELD
    }

    return $fieldTranslationPreference;
}, 10, 3 );

В этом примере для типа поля url задается параметр Копировать вместо рекомендуемого параметра Перевести.

Константы 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

Эта константа задает состояние по умолчанию для флажка Сохранять подполя повторителя и гибкого содержания в том же порядке, что и в языке по умолчанию. ACFML показывает этот флажок в блоке Синхронизация переводов ACFML для записи, которая использует опцию Эксперт. Значение по умолчанию — true, поэтому изначально флажок установлен. Установите константу в false, чтобы изначально флажок был снят. Выбор, который Вы сохраняете в записи, переопределяет это значение по умолчанию.

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

define('ACFML_REPEATER_SYNC_DEFAULT', false);

ACFML_SCAN_LOCAL_FIELDS

Эта константа задает значение по умолчанию для настройки Синхронизировать параметры перевода для локальных полей в разделе ACFИнструменты. Установите ее в true для синхронизации параметров перевода локальных полей (Local JSON и полей, зарегистрированных в PHP) при каждом запросе в админ-панели. Если константа не определена или равна false, ACFML не синхронизирует их автоматически.

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

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

Автор:Amir