WordPressへの多言語コンテンツのインポート方法 – WooCommerce、CSV、XML
WordPressに多言語コンテンツを一括インポートする方法をご紹介します。WPMLは各行に適切な言語を割り当て、言語間で翻訳をリンクさせます。このガイドでは、WooCommerceの製品カタログ、不動産リスト、イベントフィード、およびスプレッドシートを利用したあらゆるコンテンツのインポートについて説明します。
WPML エクスポートとインポートは、すでにお使いのWordPressインポートプラグインと連携して機能します。インポートプラグインがデータを移動し、最後にWPML エクスポートとインポートが言語情報を追加することで、各行が適切な言語に配置され、各翻訳がその翻訳元にリンクされます。
開始する前に
インポート先のサイトに以下のプラグインをインストールして有効化します。
- インポートプラグイン:WP All Import Pro、WP All Export Pro、ネイティブのWooCommerce CSVインポーター、または標準のWordPressインポーター。
- WPMLおよびWPML 文字列翻訳。
- WPML エクスポートとインポート(このページで説明するアドオン)。
- WooCommerceの製品をインポートする場合は、WPML Multilingual & Multicurrency for WooCommerce。
インポート先のサイトで、インポートする予定のすべての言語を使用してWPMLをセットアップします。インポートを実行する前に、WPML > 設定 > 言語に翻訳先言語がすでに存在している必要があります。
2つの方法 – ソースに合ったものを選択
多言語データの取得元に応じて、2つのインポート方法があります。
- サポートされているインポートプラグイン。 WP All Export Pro(または他のサポートされているエクスポートツール)を使用して既存のWordPressサイトからコンテンツを移行する場合、エクスポートファイルにはすでにWPML エクスポートとインポートが含まれており、言語情報が自動的に含まれます。以下のWPMLインポートの実行ステップに進んでください。
- カスタムCSVまたはXML。 スプレッドシートで多言語データを管理している場合、またはソースがWordPress以外のシステム(PIM、MLS、ERP、予約プラットフォームなど)である場合は、ファイルに3つの言語列を手動で追加します。以下のCSVまたはXMLの準備に進んでください。
3つの言語列を持つCSVまたはXMLの準備
カスタムインポートの場合は、スプレッドシートの各行に3つの列を追加します。これらは、WPMLが翻訳をペアにし、各行に適切な言語をタグ付けするためのものです。
_wpml_import_translation_group。 1つのコンテンツのすべての言語バージョンで共有される一意の値です。製品の場合はSKUを使用します。それ以外の場合は、独自のIDを生成し、翻訳元の行とその各翻訳で再利用します。_wpml_import_language_code。 その行のISO言語コードです(英語の場合はen、スペイン語の場合はes、フランス語の場合はfr、ヨーロッパポルトガル語の場合はpt-ptなど)。_wpml_import_source_language_code。 翻訳行のみに使用します。元の言語コードを指定します。翻訳元言語の行では空のままにします。
WP All Import Proや類似のツールを使用する場合は、タクソノミー(カテゴリー、タグ、製品カテゴリー)用と、投稿および製品用の2つのスプレッドシートを準備します。ネイティブのWooCommerce CSVインポーターでは、製品カテゴリーが製品の行内に存在するため、1つのスプレッドシートを使用します。
バリエーション商品のためのカスタムWooCommerce属性
カスタム属性を持つバリエーション商品がある場合は、翻訳された製品の行に4つ目の列 _wpml_import_wc_local_attribute_labels を追加します。値はslug:translationペアのJSONオブジェクトです。Size(サイズ)とColor(色)の属性を持つフランス語のバリエーション商品の場合は次のようになります。
{"size":"Taille","color":"Couleur"}
スラッグは、属性名を小文字にし、スペースをダッシュに置き換えたものです。
インポートの順序
タクソノミー用に別のファイルがある場合は、常にタクソノミーを最初にインポートしてください。投稿や製品がカテゴリー、タグ、その他のタクソノミーを参照するには、それらが事前に存在している必要があります。その後、投稿、ページ、製品、その他のコンテンツタイプをインポートします。
言語ごとにデータを1つのファイルに分割している場合は、WPMLの関連付けステップを実行する前に、すべての言語ファイルをインポートしてください。
インポートプラグインでの言語列のマッピング
各インポートプラグインは、独自の方法でカスタム列を処理します。重要なステップは、3つのWPML列をカスタムフィールド(タクソノミーの場合はタームメタ)にマッピングすることです。WP All Import Proでは、これはインポートウィザードのステップ3で行われます。
- 投稿と製品の場合。 カスタムフィールドを開き、3つのフィールドを追加して、言語列をValueボックスにドラッグし、Nameボックスには括弧なしの列名を使用します。
- タクソノミーの場合。 タームメタを開き、3つのタームメタフィールドを追加して、同じ方法で言語列をマッピングします。
列がマッピングされていない場合、関連付けステップを実行したときにWPMLが読み取るデータがありません。
インポートと関連付けステップの間に表示される内容
WPML エクスポートとインポートを実行するまで、インポートされたコンテンツはすべてデフォルト言語の下に配置されます。また、フロントエンドに言語が混在したコンテンツが表示されないように、WPMLは自動的に投稿と製品を下書きステータスで保持します。これは想定される中間状態であり、インポートの失敗を示すものではありません。
サポートされていないインポートプラグインの場合、関連付けステップが完了した後に手動で投稿を公開する必要があります。
WPMLインポートの実行
インポートプラグインの処理が完了したら、以下の手順を実行します。
- WordPress管理画面でWPML > エクスポートとインポートを開きます。
- WPMLインポートを実行をクリックします。
WPMLは各行の言語列を読み取り、その行に言語を割り当て、翻訳をその翻訳元にリンクします。大規模なカタログの場合、これには数分かかることがあります。完了すると、インポートされたコンテンツは正しい言語で公開され、すべての翻訳がその翻訳元に接続されます。
バックエンドとフロントエンドでスポットチェックを行います。
- 投稿タイプまたは製品のリストを開き、各行が適切な言語の国旗の下に表示されていることを確認します。
- フロントエンドにアクセスして言語を切り替え、各翻訳ページが翻訳元にフォールバックすることなく、翻訳されたバージョンを読み込むことを確認します。
タクソノミーの翻訳がリンクされなかった場合は、WordPress管理画面でタームを開き、タームの「言語」ボックスを使用してデフォルト言語のタームに接続します。
自動化 – スケジュールされたインポートの後にWPMLインポートを実行
夜間の同期、サプライヤーフィード、またはスケジュールされたインポートの場合、インポートプラグインの完了直後にWPMLの関連付けステップを自動的に実行できます。これを設定するには3つの方法があります。
オプション1 – POSTエンドポイント(WP All Import Scheduled Actionsのような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は処理するものが残っていないことを意味します。
オプション2 – URLエンドポイント(非推奨)
WPML エクスポートとインポート 1.2.0より前は、URLでキーを渡していました。
https://yoursite.com/?wpml_import_trigger=your-strong-secret-key-here
このURLは引き続き機能するため、現在のcronジョブは実行され続けます。ただし、これは非推奨であり、WPMLの次のメジャーリリースで削除されます。
その理由はキーにあります。URLはサーバーログ、ブラウザ履歴、アナリティクスを通過し、それに伴ってキーも移動します。POSTリクエストでは、キーはリクエスト本文内に保持されます。スケジュールされたインポートをオプション1のPOST呼び出しに移行してください。
オプション3 – アクションフック(PHPでスケジュールされたインポート用)
Action Schedulerまたはwp_schedule_single_eventを使用してPHPからインポートをスケジュールしている場合は、1つのアクション呼び出しでWPMLステップをトリガーします。
do_action( 'wpml_import_process' );
インポートアクションの直後に1回限りのバックグラウンドタスクとして実行するには、次のようにします。
wp_schedule_single_event( time(), 'wpml_import_process' );
これらのいずれかの方法で失敗した場合は、wp-config.phpでWP_DEBUG_LOGをオンにして、PHPエラーログにエラーを記録します。
コマンドラインからのWPMLインポートの実行
デプロイスクリプト、コンテナビルド、または管理画面のUIが利用できないパイプラインの場合は、WP-CLIから関連付けステップを実行します。
wp wpml import process
このコマンドは、接続された翻訳の数を報告します。これは、WPMLインポートを実行ボタンの代わりとしてそのまま使用できます。
よくある落とし穴
- インポートファイルに3つの言語列がない。 コンテンツはインポートされますが、タグ付けされていない翻訳元言語の行として配置されます。WPMLインポートを実行が関連付けできるものがありません。修正方法:ソースデータに列を追加し、再エクスポートして再インポートします。
- WP All Importのカスタムフィールド / タームメタのマッピングがスキップされた。 列が欠落している場合と同じ状態です。データはファイル内にありますが、インポートプラグインがそれを投稿に保存していません。フィールドをマッピングしてインポートを再実行してください。
- インポート先のサイトで翻訳先言語が設定されていない。 設定されていない言語のインポートされた行は、デフォルト言語に配置されます。まずWPML > 設定 > 言語で不足している言語を追加してから、再実行してください。
- サポートされていないインポートプラグイン。 関連付けステップの後も、インポートされた投稿は下書きのままになります。手動で公開するか、サポートされているプラグインに切り替えてください。
- 言語データを渡さないカスタムビルドのインポートスクリプト。 修正はスクリプトレベルで行う必要があります。3つの言語列(および該当する場合はWooCommerce属性列)が行に到達する必要があります。
インポートで同じ問題が繰り返し発生する場合は、WPMLサポートチームが24時間年中無休でインポートに関するご質問にお答えします。
WPML All Importプラグインをお探しの場合
WPML All Importは、WPML エクスポートとインポートより前のレガシープラグインです。現在はサポートされておらず、推奨されません。上記の手順は、WordPressサイトに多言語コンテンツをインポートするための最新の方法です。古いプラグインのドキュメントに記載されているワークフローの代わりに、この手順を使用してください。
執筆者:Amir · 最終更新日:2026年7月2日
執筆者:Amir · 最終更新日:2026年7月2日