wpml-config.xmlファイルを使用して、カスタムフィールドの翻訳設定を定義する方法を説明します。翻訳やコピーなどの翻訳オプションを設定し、追加の属性を挿入します。
カスタムフィールドの翻訳オプションの設定
WPMLでは、カスタムフィールドに対して4つの翻訳オプションを提供しています。
| アクション | 説明 | ATEでの表示 |
|---|---|---|
| 翻訳 | カスタムフィールドの値を翻訳できるようにします | はい |
| コピー | デフォルト言語からセカンダリ言語へカスタムフィールドの値をコピーし、両者を同期させます | いいえ |
| 一度だけコピー | デフォルト言語からセカンダリ言語へカスタムフィールドの値をコピーしますが、両者の同期は行いません | いいえ |
| 無視 | セカンダリ言語へのカスタムフィールドの値のコピーを回避します | いいえ |
言語設定ファイルへのカスタムフィールド追加の例
<wpml-config>
<custom-fields>
<custom-field action="copy">quantity</custom-field>
<custom-field action="translate">custom-title</custom-field>
<custom-field action="copy">weight</custom-field>
<custom-field action="copy-once">bg-color</custom-field>
<custom-field action="translate">custom-description</custom-field>
<custom-field action="ignore">date-added</custom-field>
</custom-fields>
</wpml-config>カスタムフィールドへの属性の追加
labelおよびgroup属性
WPMLでは、高度な翻訳エディタに表示される属性を追加できます。これには以下が含まれます。
- style – 1行(line)、テキストエリア(textarea)、またはWYSIWYG(visual)を表示します
- label – フィールドの横にラベルを表示します
- group – カスタムフィールドが属するグループを指定します。フィールドがグループ内にある場合:
- フィールドはカスタムフィールドセクションから削除されます
- フィールドは関連するグループのセクションに追加されます
カスタムフィールドの属性の例
<wpml-config>
<custom-fields>
<custom-field action="translate" style="line" label="Title">custom-title</custom-field>
<custom-field action="translate" style="textarea" label="Description">custom-description</custom-field>
<custom-field action="translate" style="visual" label="Some content" group="Custom group">custom-wysiwyg</custom-field>
</custom-fields>
</wpml-config>これらの属性が高度な翻訳エディタでどのように表示されるかは以下のとおりです。

encode属性
オプションのencode属性を追加して、エンコーディングをデフォルト値(エンコーディングno)から変更することもできます。encode属性には以下の値を使用できます。
- json
- base64
- urlencode
複数のエンコーディングを使用する場合は、値をカンマで区切ります。
エンコーディングを変更するための言語設定ファイルへのカスタムフィールド追加の例
<wpml-config>
<custom-fields>
<custom-field action="translate" encoding="json,base64">keywords</custom-field>
</custom-fields>
</wpml-config>translate_link_target属性
カスタムフィールドにリンクが含まれている場合、translate_link_target属性を使用すると、WPMLにカスタムフィールド内のリンクを強制的に確認および調整させることができます。この属性を機能させるには、リンクが<a>タグで囲まれていることを確認してください。
WPMLにカスタムフィールド内のリンクを強制的に調整させる例
<wpml-config>
<custom-fields>
<custom-field action="translate" translate_link_target="1">name_of_the_acf_field</custom-field>
</custom-fields>
</wpml-config>WPMLはデフォルトで、カスタムフィールド内のすべてのサブキーを翻訳します。これを回避するには、翻訳するサブキーを指定します。
カスタムフィールド内のサブキーを翻訳するためのコード例
<wpml-config>
<custom-fields>
<custom-field action="translate">with_attributes</custom-field>
<custom-field action="translate">with_deep_attributes</custom-field>
<custom-field action="translate">no_attributes</custom-field>
</custom-fields>
<custom-fields-texts>
<key name="with_attributes">
<key name="attribute1" />
<key name="attribute2" />
</key>
<key name="with_deep_attributes">
<key name="attribute1" />
<key name="attribute2">
<key name="level1">
<key name="level2">
</key>
</key>
</key>
</key>
</custom-fields-texts>
</wpml-config>ワイルドカード
管理テキストで使用されるのと同じ方法でワイルドカードを使用することもできます。
- 次のコードを使用して、title-で始まるすべてのサブフィールドに一致させます。
<key name="title-*" /> - 次のコードを使用してすべてのサブフィールドに一致させます(一般的に配列インデックスに一致させるために使用されます)。
<key name="*" /> [{"title":"First title"},{"title":"Second title"}]を取得するには、次のコードを使用します。
ワイルドカードを使用した設定ファイルの例
<wpml-config>
<custom-fields-texts>
<key name="key-name">
<key name="*">
<key name="title" />
</key>
</key>
</custom-fields-texts>
</wpml-config>投稿カスタムフィールド内のIDの自動変換
WPML 4.8以降では、投稿カスタムフィールドにあるIDを宣言できます。WPMLはフロントエンドでIDを翻訳済みのバージョンに置き換えます。
これを行えるのは、翻訳オプションが「コピー」の場合(つまり、<custom-field action="copy">を使用する場合)のみです。
wpml-config.xmlファイルのcustom-fieldsで、以下を使用します。
- type – 参照されるオブジェクト(例:post-ids)を指定します
- sub-type(オプション)– 投稿タイプのスラッグを宣言する場合に使用します
WPMLは以下の形式のIDを検出して変換できます。
- 単一のID(例:123)
- カンマ区切りのIDリスト(例:"123,456,789")
- IDの配列(およびエンコードされた配列)(例:[123,456,789])
カスタムフィールドでIDを宣言する例
<custom-fields> <custom-field action="copy" type="post-ids" sub-type="product">custom_field_with_id</custom-field> </custom-fields>
IDがcustom-fields-textsセクションのサブレベルにネストされている場合、WPMLはフィールドの翻訳設定(コピー、翻訳など)に関係なくIDを検出して変換します。
ネストされたカスタムフィールドでIDを宣言する例
<wpml-config>
<custom-fields-texts>
<key name="custom_field_with_nested_ids">
<key name="custom_field_nested_key_with_ids" type="post-ids" sub-type="product" />
<key name="custom_field_nested_key_with_ids_with_wildcard_*" type="post-ids" sub-type="product" />
<key name="custom_field_nested_key_with_subkey">
<key name="custom_field_nested_key_with_subkey_with_ids" type="post-ids" sub-type="product" />
</key>
</key>
</custom-fields-texts>
</wpml-config>同じtypeおよびsub-type構文を使用して、管理テキストでIDを宣言(wp_optionsテーブル)できます。
カスタムタクソノミータームフィールドの翻訳オプションの設定
タクソノミータームのカスタムフィールドを翻訳するには、フィールド名とWPMLが実行すべきアクション(translate、copy、copy-once、ignore)を指定する必要があります。
このマークアップをwpml-configタグの下にネストします。
カスタムタームフィールドには、以下の翻訳オプションを設定できます。
- translate: ユーザーがカスタムタームの値を翻訳できるようにします。これらのタームは翻訳エディタ画面に表示され、手動または自動で翻訳するか、他の翻訳者に送信できます。
- copy: デフォルト言語のカスタムタームの値をセカンダリ言語にコピーします。つまり、デフォルト言語のカスタムタームの値を更新すると、常にセカンダリ言語にコピーされます。copyに設定されたカスタムタームは、翻訳エディタ画面には表示されません。
- copy-once: 初回の翻訳プロセスで、カスタムタームの値をセカンダリ言語にコピーします。copy-onceアクションを使用するカスタムタームは、翻訳エディタ画面には表示されません。ただし、ユーザーは投稿編集画面を使用して、セカンダリ言語のカスタムタームの値をデフォルト言語とは異なる値に変更できます。
- ignore: カスタムタームがセカンダリ言語にコピーされるのを防ぎます。
言語設定ファイルへのカスタムターム追加の例
<wpml-config>
<custom-term-fields>
<custom-term-field action="copy">term_meta_A</custom-term-field>
<custom-term-field action="translate">term_meta_B</custom-term-field>
<custom-term-field action="ignore">term_meta_C</custom-term-field>
<custom-term-field action="copy-once">term_meta_D</custom-term-field>
</custom-term-fields>
</wpml-config>タクソノミータームのカスタムフィールドに保存されたIDの自動変換
これを行えるのは、フィールドが「コピー」に設定されている場合(つまり、<custom-term-field action="copy">を使用する場合)のみです。
カスタム投稿フィールドと同様に、タクソノミーのカスタムフィールドに保持されているオブジェクトIDを宣言できます。これにより、WPMLはそれらを自動的に翻訳済みのバージョンに変換します。
custom-term-fieldsセクションで、以下を使用します。
- type – 参照されるオブジェクト(例:post-idsまたはtaxonomy-ids)を指定します
- sub-type(オプション)– 特定のエンティティを宣言する場合に使用します
カスタムタームフィールドでIDを宣言する例
<wpml-config>
<custom-term-fields>
<custom-term-field action="copy" type="post-ids" sub-type="product">custom_term_field_with_id</custom-term-field>
</custom-term-fields>
</wpml-config>追加リソース
wpml-config.xmlファイルの詳細については、言語設定ファイルのガイドをご覧ください。
wpml-config.xmlファイルを使用して他の要素をカスタマイズする方法については、以下の追加ガイドをご覧ください。