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に設定すると、チェックボックスがオフの状態で開始されます。投稿で保存した選択は、このデフォルトを上書きします。
テーマのfunctions.php ファイルで、ACFML_REPEATER_SYNC_DEFAULTのデフォルト値を上書きできます。
define('ACFML_REPEATER_SYNC_DEFAULT', false);
ACFML_SCAN_LOCAL_FIELDS
この定数は、「ACFツール」にある「ローカルフィールドの翻訳設定を同期」設定のデフォルトを設定します。trueに設定すると、管理画面へのリクエストのたびにローカルフィールド(ローカルJSONおよびPHPで登録されたフィールド)の翻訳設定が同期されます。定数が定義されていないか、falseの場合、ACFMLはそれらを自動的に同期しません。
「ACFツール」で保存した選択は、この定数を上書きします。1回だけ同期するには、そこで「今すぐ1回同期する」を選択し、「適用」をクリックします。
詳細については、ローカルJSONの使用 (新しいタブで開く)に関するACFの公式ドキュメントを確認してください。