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 字段类型为可翻译,从而覆盖其默认的 copycopy_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 字段同步。

您可以在主题的 functions.php 文件中覆盖 ACFML_REPEATER_SYNC_DEFAULT 的默认值:

define('ACFML_REPEATER_SYNC_DEFAULT', false);

ACFML_SCAN_LOCAL_FIELDS

将此常量设置为 false 会禁用扫描 JSON 文件以查找本地字段。

这意味着,如果您更改本地字段中的翻译首选项,它将不会同步到数据库。您需要为字段手动设置翻译首选项。

有关更多信息,请查看有关使用本地 JSON 的官方 ACF 文档。

作者:Amir · 最后更新时间:2026年6月30日