コードでの使用例を含む、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の公式ドキュメントを確認してください。