了解 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 字段同步。
您可以在主题的 functions.php 文件中覆盖 ACFML_REPEATER_SYNC_DEFAULT 的默认值:
define('ACFML_REPEATER_SYNC_DEFAULT', false);
ACFML_SCAN_LOCAL_FIELDS
将此常量设置为 false 会禁用扫描 JSON 文件以查找本地字段。
这意味着,如果您更改本地字段中的翻译首选项,它将不会同步到数据库。您需要为字段手动设置翻译首选项。
有关更多信息,请查看有关使用本地 JSON 的官方 ACF 文档。