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に設定すると、チェックボックスがオフの状態で開始されます。投稿で保存した選択は、このデフォルトを上書きします。

テーマの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の公式ドキュメントを確認してください。

執筆者:Amir