WordPressへの多言語コンテンツのインポート方法 – WooCommerce、CSV、XML
WPML エクスポートとインポートプラグインを使用して、WordPressに多言語コンテンツを一括インポートする方法を説明します。WPMLは、投稿、固定ページ、カスタム投稿タイプ、タクソノミー、WooCommerce商品とそのバリエーションなど、すべての行に適切な言語を割り当て、言語間で翻訳をリンクします。別のWordPressサイト、スプレッドシート、PIMや予約プラットフォームなどの外部システムなど、あらゆるソースで機能します。
はじめに
このプラグインを使用する理由
WPML エクスポートとインポートは、すでにお使いのWordPressインポートプラグインと連携して機能します。インポートプラグインがデータを移動します。WPML エクスポートとインポートは最後に言語情報を追加するため、各行が適切な言語に配置され、各翻訳がその翻訳元にリンクされます。
統合
WPML エクスポートとインポートは、以下のエクスポートおよびインポートツールで機能します。
- WP All Export ProおよびWP All Import Pro – 言語情報が自動的に含まれた状態でWordPressサイトからエクスポートし、CSVまたはXMLから投稿、商品、タクソノミーをインポートします。
- 組み込みのWooCommerceエクスポート/インポートツール(商品エクスポートおよび商品インポート) – 単一のCSVを介して商品を移動し、エクスポートに言語情報が含まれます。
- 組み込みのWordPressエクスポート/インポートツール – WXRファイルを介して投稿、固定ページ、カスタム投稿タイプを移動します。
- WP Import Exportプラグイン。
- カスタムCSVまたはXMLパイプライン – 行に言語列を追加できる任意のツール。
従来版 – WPML All Importプラグイン
WPML All Importは、WPML エクスポートとインポートの前に提供されていた従来のプラグインです。現在はサポートされておらず、推奨されていません。このページの手順は、WordPressサイトに多言語コンテンツをインポートするための最新の方法です。古いプラグインのドキュメントに記載されているワークフローの代わりに、この手順を使用してください。
エクスポート – インポートファイルの取得
インポートするものはすべてファイルから始まります。ファイルを取得するには2つの方法があります。
- WordPressサイトからエクスポートする。 サポートされているエクスポートツールを使用すると、言語情報が自動的に付随します。
- 自分で準備する。 データがスプレッドシートまたは外部システム(PIM、MLS、ERP、予約プラットフォーム)にある場合、ファイルに言語列を手動で追加します。インポートセクションの「独自のファイルの準備」を参照してください。
設定
WordPressサイトからエクスポートする場合は、そのサイトで以下をインストールして有効化します。
- WP All Export Pro(またはサポートされている他のエクスポートツール)。
- WPML エクスポートとインポート – エクスポートされるすべての行に言語情報を追加します。
ファイルを自分で準備する場合、インストールするものはありません。ファイル自体で作業を行います。
エクスポートの実行
選択したエクスポートツールを使用してWordPressコンテンツをエクスポートします。WPML エクスポートとインポートが有効な場合、エクスポートファイルにはすでにすべての行の言語列が含まれています。手動で追加するものはありません。インポートセクションに進みます。
インポート – コンテンツの取り込み
設定
インポート先のサイトで以下のプラグインをインストールして有効化します。
- インポートプラグイン:WP All Import Pro、組み込みのWooCommerceインポートツール、組み込みのWordPressインポーター、またはWP Import Export。
- WPMLおよびWPML 文字列翻訳。
- WPML エクスポートとインポート(このページで説明しているアドオン)。
- WooCommerce商品をインポートする場合は、WPML Multilingual & Multicurrency for WooCommerce。
インポートする予定のすべての言語でWPMLをセットアップします。インポートを実行する前に、対象の言語がWPML設定言語にすでに存在している必要があります。
初回インポートウィザード
初めてWPMLエクスポートとインポートを開くと、短いウィザードが表示され、コンテンツをこのサイトからエクスポートするか、別のウェブサイトまたはシステムからエクスポートするかを尋ねられます。

このサイトからエクスポートする場合、ウィザードは使用しているツールも尋ねます。組み込みのWordPressまたはWooCommerceエクスポート/インポートツール、WP All ExportおよびWP All Import、WP Import Export、または別の方法のいずれかです。

回答に基づいて、セットアップに合わせた3ステップのガイドがページに表示されます。コンテンツに言語列を追加する方法(サポートされているツールの場合は自動、それ以外の場合は手動)、インポート自体、および戻ってWPMLインポートを実行するためのリマインダーです。言語情報を持つインポートされたコンテンツが検出されると、ページには待機中の投稿とタームの数が報告され、「WPMLインポートを実行」ボタンが表示されます。

他に設定するものはありません。このページがプラグインのインターフェースのすべてです。
独自のファイルの準備 – スプレッドシートと外部システム
ファイルの各行に3つの列を追加します。これらは、WPMLが翻訳をペアにし、各行に適切な言語をタグ付けするためのものです。
_wpml_import_translation_group。1つのコンテンツのすべての言語バージョンで共有される一意の値。商品の場合は、SKUを使用します。それ以外の場合は、独自のIDを生成し、翻訳元の行とその各翻訳で再利用します。_wpml_import_language_code。行のISO言語コード(英語の場合はen、スペイン語の場合はes、フランス語の場合はfr、ヨーロッパポルトガル語の場合はpt-ptなど)。_wpml_import_source_language_code。翻訳行のみ。元の言語コード。翻訳元の言語の行では空のままにします。
各翻訳グループの値は、1つのコンテンツにのみ使用します。WPMLは、インポート後も接続するすべてのアイテムのグループを保持します。後で同じグループ値でインポートした行は、そのアイテムの翻訳に結合されます。
投稿および商品の行には、さらに2つのオプションの列があります。
_wpml_import_after_process_post_status。WPMLインポートを実行の後に投稿が取得するステータス。WordPressのステータス名を使用します:publish、draft、pending、またはprivate。publishedではなくpublishと記述します。_wpml_import_tea。翻訳元の行でこれを1に設定すると、そのアイテムが自動翻訳に送信されます。この列は、WPMLのすべてを自動翻訳するモードがオンになっている場合にのみ機能します。「インポートされたコンテンツの自動翻訳」を参照してください。
AIアシスタントによるファイルの準備
これらの列を手動で追加する必要はありません。CSVまたはエクスポートファイルをAIアシスタントに渡し、次のような指示を出します。「このファイルにWPMLインポート列の_wpml_import_translation_group、_wpml_import_language_code、および_wpml_import_source_language_codeを追加してください。英語の行がオリジナルです。SKUによって各翻訳をそのオリジナルとペアにしてください。」アシスタントは数秒で3つの列に入力します。インポートする前に数行を確認してください。
ブログ投稿の実際の例を以下に示します。ファイルにはlanguage列と、行が翻訳する英語の投稿のタイトルを含むoriginal列があります。
title,content,language,original
Summer Sale,Our summer sale starts on June 1.,English,
Soldes d'été,Nos soldes commencent le 1er juin.,French,Summer Sale
このファイルに対する指示:
このCSVに_wpml_import_translation_group、_wpml_import_language_code、_wpml_import_source_language_codeの列を追加してください。英語の行がオリジナルです。各英語の行について、そのタイトルから短いIDを作成し、それを翻訳グループとして使用してください。各翻訳には、そのオリジナル列が指定する英語の行のグループを付与してください。言語コードにはenとfrを使用してください。英語の行では翻訳元言語を空のままにし、翻訳ではenに設定してください。
結果(コンテンツは短縮されています):
title,content,language,original,_wpml_import_translation_group,_wpml_import_language_code,_wpml_import_source_language_code
Summer Sale,...,English,,summer-sale,en,
Soldes d'été,...,French,Summer Sale,summer-sale,fr,en
WP All Import Proおよび同様のツールの場合は、2つのスプレッドシートを準備します。1つはタクソノミー(カテゴリー、タグ、商品カテゴリー)用、もう1つは投稿および商品用です。組み込みのWooCommerceインポートツールでは、商品カテゴリーが商品の行内に存在するため、単一のスプレッドシートを使用します。
バリエーション商品のカスタムWooCommerce属性
カスタム属性を持つバリエーション商品がある場合は、翻訳された商品の行に追加の列_wpml_import_wc_local_attribute_labelsを追加します。値はslug:translationペアのJSONオブジェクトです。サイズ(Size)および色(Color)属性を持つフランス語のバリエーション商品の場合は次のようになります。
{"size":"Taille","color":"Couleur"}
スラッグは、属性名を小文字にし、スペースをダッシュに置き換えたものです。
タクソノミーを先にインポートしてから投稿をインポートする
タクソノミー用の個別のファイルがある場合は、常にそれを最初にインポートします。投稿や商品がカテゴリー、タグ、その他のタクソノミーを参照できるようにするには、それらが先に存在している必要があります。その後、投稿、固定ページ、商品、その他のコンテンツタイプをインポートします。
データを言語ごとに1つのファイルに分割する場合は、WPMLの関連付けステップを実行する前に、すべての言語ファイルをインポートします。
WPMLインポートは、すべてが取り込まれた後に1回だけ実行します。関連付けステップでは、投稿の前にタクソノミーが処理され、その後各投稿が独自の言語のタームに再接続されます。そのため、タームがまだ関連付けられていない状態でインポートされた投稿も、適切な言語のタームに添付されて出力されます。
インポートプラグインでの言語列のマッピング
各インポートプラグインは、独自の方法でカスタム列を処理します。重要なステップは、3つのWPML列をカスタムフィールド(タクソノミーの場合はタームメタ)にマッピングすることです。WP All Import Proでは、これはインポートウィザードのステップ3で行われます。
- 投稿および商品の場合。 「Custom Fields」を開き、3つのフィールドを追加して、言語列を「Value」ボックスにドラッグし、「Name」ボックスには括弧なしの列名を使用します。
- タクソノミーの場合。 「Term Meta」を開き、3つのタームメタフィールドを追加して、言語列を同じ方法でマッピングします。

列がマッピングされていない場合、関連付けステップを実行したときにWPMLが読み取るデータがありません。
インポートと関連付けステップの間に表示される内容
WPML エクスポートとインポートを実行するまで、インポートされたコンテンツはすべてデフォルト言語のままになり、WPMLは混在した言語のコンテンツがフロントエンドに表示されないように、投稿と商品を自動的に「下書き」ステータスで保持します。これは想定された中間状態であり、インポートが失敗した兆候ではありません。関連付けステップの後、コンテンツは公開されるか、_wpml_import_after_process_post_status列に入力したステータスに設定されます。

サポートされていないインポートプラグインの場合、関連付けステップの完了後に投稿を手動で公開する必要があります。
WPMLインポートの実行
インポートプラグインが完了したら、次の手順を実行します。
- WordPress管理画面でWPMLエクスポートとインポートを開きます。
- 「WPMLインポートを実行」をクリックします。


WPMLは各行の言語列を読み取り、その行に言語を割り当て、翻訳をその翻訳元にリンクします。大規模なカタログの場合、これには数分かかることがあります。完了すると、インポートされたコンテンツは正しい言語で公開され、すべての翻訳がその翻訳元に接続されます。
バックエンドとフロントエンドでスポットチェックを行います。
- 投稿タイプまたは商品のリストを開きます。各行が正しい言語の国旗の下に表示されていることを確認します。
- フロントエンドにアクセスして言語を切り替えます。各翻訳ページは翻訳元にフォールバックすることなく、翻訳されたバージョンを読み込む必要があります。

タクソノミーの翻訳がリンクされなかった場合は、WordPress管理画面でタームを開き、タームの言語ボックスを使用してデフォルト言語のタームに接続します。
WPMLインポートがカバーしないもの
WPMLインポートは、各アイテムの言語を設定し、その翻訳を接続します。他のコンテンツは変更しません。インポート後に以下を確認してください。
- 親ページ、メニュー、先頭に固定表示される投稿。 WPMLは翻訳されたページの親を調整せず、インポートされたアイテムをメニューに追加せず、言語間で先頭に固定表示の設定をコピーしません。
- コンテンツ内のリンクと画像ID。 WPMLは、インポートされたコンテンツ内のリンク、画像ID、または画像フィールドを変更しません。翻訳でこれらを編集してください。
- コピーされたフィールド。 WPMLインポートは翻訳を接続しますが、価格や在庫などのフィールドをオリジナルから翻訳にコピーしません。更新インポート後にこれらをコピーするには、オリジナルを開いて再度保存します。
- WooCommerce Bookings。 予約可能な商品は、人物タイプ(子供、大人など)やリソースなしでインポートされます。インポート後、翻訳された商品に人物タイプとリソースを追加してください。
自動化 – クリックせずにWPMLインポートを実行する
夜間の同期、サプライヤーフィード、デプロイメントパイプライン、またはスケジュールされたインポートの場合、WPMLの関連付けステップは管理画面のUIなしで実行できます。これを関連付けるには3つの方法があります。
POSTエンドポイント(WP All ImportのスケジュールされたアクションのようなCron駆動のインポート用)
これが推奨される方法です。wp-config.phpに強力なシークレットキーを追加します。
define( 'WPML_IMPORT_KEY', 'your-strong-secret-key-here' );
次に、スケジュールされたインポートのセットアップに2番目のコマンドを追加します。これはサイトにPOSTリクエストを送信し、リクエスト本文でキーを渡します。
curl -X POST https://yoursite.com/ \
-d 'wpml_import_trigger=your-strong-secret-key-here'
wgetを使用した同じ呼び出し:
wget -q -O - \
--post-data='wpml_import_trigger=your-strong-secret-key-here' \
https://yoursite.com/
WP All Import Proの手動スケジューリングの場合は、インポートコマンドの直後にいずれかのコマンドを追加します。
関連付けステップが実行されると、サイトはステータス200と次のメッセージで応答します。
Import process completed
他の2つの応答は結果を示します。401はキーが一致しないことを意味し、204は処理するものが残っていなかったことを意味します。
古いURLエンドポイント – 5.0.0で削除
WPML エクスポートとインポート 1.2.0より前は、URLでキーを渡していました。
https://yoursite.com/?wpml_import_trigger=your-strong-secret-key-here
WPML エクスポートとインポート 5.0.0以降、このURLではインポートが実行されなくなりました。URLにキーを含むリクエストはステータス405を受け取ります。スケジュールされたインポートを上記のPOST呼び出しに移行してください。
理由はキーにあります。URLはサーバーログ、ブラウザ履歴、分析ツールを経由するため、キーもそれらと一緒に移動します。POSTリクエストでは、キーがリクエスト本文内に保持されます。
アクションフック(PHPでスケジュールされたインポート用)
Action Schedulerまたはwp_schedule_single_eventを使用してPHPからインポートをスケジュールしている場合は、1つのアクション呼び出しでWPMLステップをトリガーします。
do_action( 'wpml_import_process' );
インポートアクションの直後に1回限りのバックグラウンドタスクとして実行するには:
wp_schedule_single_event( time(), 'wpml_import_process' );
インポートが完了しない場合は、「WPMLのデバッグ」を参照してください。
WP-CLI
デプロイメントスクリプト、コンテナビルド、または管理画面UIが利用できないパイプラインの場合は、WP-CLIから関連付けステップを実行します。
wp wpml import process
コマンドは、接続された翻訳の数を報告します。これは、「WPMLインポートを実行」ボタンの代わりとしてそのまま使用できます。
インポートされたコンテンツの自動翻訳
WPMLでインポートされたコンテンツを自動的に翻訳させることができます。これがない場合、コンテンツを1つの言語でインポートした後、「すべてを自動翻訳する」を有効にした状態で、インポートされたすべてのアイテムを選択し、自分で翻訳に送信する必要があります。これは、大規模なバッチや繰り返しのインポートでは時間がかかります。代わりに、ファイルにもう1つ列を追加します。
_wpml_import_tea。自動翻訳したい翻訳元言語の行で1に設定します。
WPMLインポートを実行すると、WPMLはフラグが立てられたすべての投稿に対して、まだ翻訳がないサイトの各言語への自動翻訳ジョブを作成します。翻訳をインポートした行はそのまま残されます。
これには、WPMLの「すべてを自動翻訳する」モードが有効になっている必要があります。有効になっていない場合、フラグは無視されます。
よくある落とし穴
- インポートファイルに3つの言語列が欠落している。 コンテンツはインポートされますが、タグ付けされていない翻訳元言語の行として配置されます。「WPMLインポートを実行」で関連付けるものがありません。修正方法:ソースデータに列を追加し、再エクスポートして、再インポートします。
- WP All ImportのCustom Fields / Term Metaのマッピングがスキップされた。 列の欠落と同じ状態です。データはファイル内にありますが、インポートプラグインがそれを投稿に保存しませんでした。フィールドをマッピングしてインポートを再実行してください。
- インポートサイトで対象言語が設定されていない。 設定されていない言語のインポートされた行は、デフォルト言語に配置されます。まずWPML設定言語で不足している言語を追加してから、再実行してください。
- サポートされていないインポートプラグイン。 インポートされた投稿は、関連付けステップの後も下書きのままになります。手動で公開するか、サポートされているプラグインに切り替えてください。
- 言語データを渡さないカスタムビルドのインポートスクリプト。 修正はスクリプトレベルで行う必要があります。3つの言語列(および該当する場合はWooCommerce属性列)が、行に到達する必要があります。
- 独自のコードで追加したコンテンツが下書きに保持されない。 WPMLは、サポートされているインポートプラグインの場合にのみコンテンツを下書きに保持します。
wp_insert_postを使用してコードが追加するコンテンツ、またはPHPやWP-CLIから実行されるWooCommerceインポートは、コードが指定したステータスを維持します。新しいコンテンツは自分で下書きとして作成し、_wpml_import_after_process_post_statusをpublishに設定してください。 wp exportがタームの言語列を削除する。 WP-CLI 2.12.0には、タームメタを書き込まないexport-command 2.1.14が同梱されています。wp importの後、すべてのカテゴリーとタグで言語列が失われます。export-commandを2.1.15以降に更新するか、WordPress管理画面のツールエクスポートからエクスポートしてください。
インポートで同じ問題が繰り返し発生する場合は、WPMLサポートチームが24時間年中無休でインポートの質問にお答えします。
ユースケース
新しいサイトへの多言語コンテンツの移行
最も一般的なシナリオ:1つのWPMLサイトからコンテンツをエクスポートし、その全体または一部を別のサイトに取り込みます。
- エクスポート元のサイトで、エクスポートツールと併せてWPML エクスポートとインポートをインストールし、移動するコンテンツをエクスポートします(「エクスポート」を参照)。言語列は自動的に付随します。
- 新しいサイトで、インポート設定(プラグインのインストール、エクスポート元サイトのすべての言語のセットアップ)を完了します。
- インポートツールを使用して、タクソノミーをインポートしてからコンテンツをインポートします。
- 「WPMLインポートを実行」します。コンテンツは、エクスポート元のサイトと同じように、すべての翻訳が接続された状態で適切な言語で出力されます。
WPMLのリセットと同一サイトへの翻訳の再インポート
エクスポートは、サイトの言語の関連付け(各行の言語、およびどの行が1つの翻訳グループとして属しているか)の安全なコピーと考えてください。このコピーは自動的に最新の状態に保つことができます。たとえば、エクスポートツールでスケジュールされた夜間エクスポートを独自のファイルに保存します。WPMLの言語データが不良な状態になった場合は、WPMLをリセットし、以下の手順に従って、データがまだ良好だったときに取得した最新のエクスポートを再インポートします。ただし、問題が発生した後に作成されたエクスポートを修復することはできません。ファイルには、エクスポートされた時点のデータの状態がそのまま保存されます。
- 言語データが完全な状態のときにエクスポートする – または、最新のスケジュールされたエクスポートを使用します。必要なすべてのコンテンツタイプをその翻訳とともにエクスポートします(「エクスポート」を参照)。3つの言語列には、復元に必要な情報(各行の言語、および互いの翻訳として属している行)が記録されます。
- WPMLをリセットする。 「WPML をリセット」に従います。リセットすると、すべてのWPMLデータ(言語、各アイテムの言語、翻訳間のリンク、文字列翻訳、翻訳ジョブ)が削除され、WPMLが無効化されます。投稿、固定ページ、商品、タクソノミーはそのまま残ります。WPMLを再度有効化します。
- 言語を再度セットアップする – リセット前にサイトにあったのと同じデフォルト言語とセカンダリ言語を設定します。
- 既存のコンテンツを更新しながら、同じファイルを再インポートする。 これは新しいサイトへの移行とは異なるステップです。投稿はすでに存在しているため、インポートでは新しいものを作成するのではなく、それらを更新する必要があります。WP All Importのレコード照合(IDでの照合)、またはWooCommerceインポーターの既存の商品を更新オプションを使用します。標準のWordPressインポーターではこれができません。新しいコンテンツのみを作成するため、すべての行が複製されてしまいます。
- 「WPMLインポートを実行」します。ファイルからの言語の割り当てと翻訳グループが、既存のコンテンツに再び関連付けられます。
各アイテムの言語と翻訳間のリンクのみが復元されます。文字列翻訳、翻訳ジョブ、WPML設定はエクスポートファイルには含まれません。インポート後にこれらを再度セットアップしてください。
後から言語を追加する
カタログを英語とスペイン語でインポートし、後からフランス語を追加する場合を考えます。フランス語の行のみを含むファイルを準備します。各行にオリジナルの翻訳グループ、言語コードfr、翻訳元言語enを指定します。ファイルをインポートし、「WPMLインポートを実行」をクリックします。WPMLは接続したすべてのアイテムのグループを保持するため、各フランス語の行はそのオリジナルの翻訳に結合されます。
毎晩のサプライヤーフィードの同期
サプライヤーから毎晩商品フィードが送信されるとします。オリジナルの商品は英語で、フィードには3つの言語列があります。WP All Import Proでインポートをスケジュールし、その直後にPOST呼び出しを追加します。新しい商品の行で_wpml_import_teaを1に設定します。毎晩、新しい商品に言語が割り当てられ、WPMLはそれらを他の言語への自動翻訳に送信します。