画像付きで解説|WordPress→Shopifyブログ移行ガイド

WordPressからShopifyにリニューアルする際、時間を要する工程のひとつが「ブログ記事の移行」です。
ブログ記事数が少ないと手動での移行も可能ですが、以下のケースでは手動移行は現実的ではありません。
- ブログ記事が多い
- 大量の画像やカスタムフィールドが使われている
大量の記事を移行する場合は、WordPressのプラグイン「WP All Export」で出力し、Shopifyのアプリ「Matrixify」でインポートする方法があります。
本記事では、当社が500件以上のブログ記事(カスタム投稿タイプ)をShopifyへ移行した経験をもとに、作業を実施した2025年10月28日時点での情報をお届けします。
本記事を読むことで、下記がわかります。
- WordPressのブログ記事数が多い場合の、効率的な移行方法
- カスタム投稿タイプの移行方法
- WordPressからShopifyへブログ記事を移行する際の注意点
※本記事は、当社の経験をもとに構成しております。ベストな方法ではない可能性がありますので、予めご了承ください。
全体の流れ
移行する流れは次の5ステップです。
- WordPressにプラグインをインストールし、有効化
- プラグインを使い、記事をCSV形式でエクスポート
- エクスポートしたCSVを加工
- Shopifyにアプリ「Matrixify」をインストール
- アプリを使いインポート
ステップ1:WordPressにプラグインをインストールし有効化
まず、プラグインを有効にします。
WordPressの管理画面→新規追加から 「WP All Export」を検索バーに入力し検索します。
「今すぐインストール」して「有効化」をクリック
ステップ2:プラグインを使い記事をCSV形式でエクスポート
プラグインが有効化できると、管理画面の左サイドバーにプラグインが出現します。(タコのようなマーク)
「すべてエクスポート」をクリックし、投稿タイプを選択(「投稿タイプを選択」をクリックすると隠れていた投稿タイプが出てくる)
「利用可能データ」から出力したいデータを選んで中央の点線までドラッグ&ドロップします。
代表的な出力項目は以下の通りです。
- ID:記事ID
- Title:記事タイトル
- Content:本文
- Date:記事投稿日
- メディア
- 画像
URLアイキャッチ画像の絶対パス - 分類:カスタムタクソノミー(=カスタム投稿タイプで作られた記事のカテゴリーとタグのこと
- カスタムフィールド(カスタムフィールドを使用している記事を出力する際は必ず選ぶこと)
- その他
- Status:記事の状態(公開中、下書き、非公開など)
- Author Username:執筆者フルネーム
- Slug:記事のスラッグ
- Post Modified Date:記事更新日
本件では、カスタム投稿タイプの記事を2種類移行するために、下記を出力しました(※すべてのカスタムフィールドは出力せず)
- ID:記事ID
- Title:記事タイトル
- Content:本文
- Date:記事投稿日
- メディア
画像
URLアイキャッチ画像の絶対パス - 分類:カスタムタクソノミー(=カスタム投稿タイプで作られた記事のカテゴリーとタグのこと)
- カスタムフィールド(カスタムフィールドを使用している記事を出力する際は必ず選ぶこと)
- その他
Status:記事の状態(公開中、下書き、非公開など)
Author Username:執筆者フルネーム
Slug:記事のスラッグ
ステップ3:エクスポートしたCSVを加工
続いてCSVをGoogleスプレッドシート(※関数処理したいので、Excelではなくスプレッドシート推奨です)で開き、 ShopifyにCSVが正しく読み込まれるようにするため、CSVを編集していきます。
項目を変更・追加
まず、スプレッドシートでCSVを開いた状態が下記です(機密情報に関わる部分は加工しています。)
修正が必要な部分は上記画像の赤枠部分です。
編集する箇所
・Date ⇒ Published At
- Content ⇒ Body HTML
- Slug ⇒ Handle(WordPressのスラッグ)
- Author Username ⇒ Author
- Image URL ⇒ Image Src
- カスタムタクソノミー ⇒ Tags
複数のカスタムタクソノミーがある場合はセルを結合し、語句を整える必要がありますが、その方法は後述します。
追加するもの
・Blog:Handle(Handleを一番右端の列に追加し、カスタム投稿のスラッグを全セルに入力します。)
カテゴリー / タグ(後でShopify用に整形)
「│」を「,」に変換
次に、「Tags」の列にご注目ください。複数のカテゴリーがある場合、「│」で区切られています。 このままインポートすると、ひとつのカテゴリーと認識され「カテゴリー│カテゴリー」となります。
そのため、「│」を「,」に変換します。ちなみに「,」は全角ではなく半角です。 しかし、大量にカテゴリーがある場合、ひとつひとつ手作業で修正すると大変です。そこで、「検索と置換」で一括で置換します。
検索に「│」、置換後の文字列に「,」、このシートを選択し、「すべて置換」をクリック
一括で変換できました。
カスタムフィールドの本文をHTMLに置換
カスタム投稿タイプではカスタムフィールドを活用しているケースがあると思います。
投稿タイプによっては、記事の本文にもカスタムフィールドを適用しているケースがあります。カスタムフィールドをそのまま出力するとプレーンテキスト(HTML化されていないテキスト)が出力されます。
しかし、このままの状態でShopifyにインポートすると正しく認識されてないので、HTML化する必要があります。
スプレッドシートの上部の「拡張機能」から「Apps Script」をクリックします。
初期画面がこちら
function myFunction() { と表示されます。
}を削除し、下記コードをコピーして、貼り付けます。
function convertToHTML() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getActiveRange(); // 選択範囲を取得
if (!range) {
SpreadsheetApp.getUi().alert(‘セルを選択してください’);
return;
}
const values = range.getValues();
const numRows = values.length;
const numCols = values[0].length;
// 変換結果を格納する配列
const htmlResults = [];
for (let i = 0; i < numRows; i++) {
const rowResults = [];
for (let j = 0; j < numCols; j++) {
let text = values[i][j];
if (typeof text === ‘string’ && text.length > 0) {
let html = convertTextToHTML(text);
rowResults.push(html);
} else {
rowResults.push(”);
}
}
htmlResults.push(rowResults);
}
// 結果を選択範囲の右隣の列に出力
const outputRange = sheet.getRange(range.getRow(), range.getColumn(), numRows, numCols);
outputRange.setValues(htmlResults);
SpreadsheetApp.getUi().alert(‘変換が完了しました!’);
}
function convertTextToHTML(text) {
// 改行コードを統一(\r\n → \n)
text = text.replace(/\r\n/g, ‘\n’).replace(/\r/g, ‘\n’);
// 連続する空行を1つにまとめる(3行以上の空行を2行に)
text = text.replace(/\n{3,}/g, ‘\n\n’);
// 空行(\n\n)で段落を分割
const paragraphs = text.split(/\n\n+/);
let html = ”;
for (let i = 0; i < paragraphs.length; i++) {
const para = paragraphs[i].trim();
if (para.length > 0) {
// 段落内の単一改行を<br>に変換
const paraWithBr = para.replace(/\n/g, ‘ <br>\n’);
// <p>タグで囲む
html += ‘<p>‘ + paraWithBr + ‘p>‘;
// 最後の段落以外は、段落間に<br>を追加
if (i < paragraphs.length - 1) {
html += ‘\n<br>\n’;
} else {
html += ‘\n’;
}
}
}
return html;
}
// メニューに関数を追加
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu(‘HTML変換’)
.addItem(‘選択セルをHTML変換’, ‘convertToHTML’)
.addToUi();
}
保存ボタンをクリックしたら、任意のわかりやすい名前に変更します。ここでは「HTML変換」としました。
スプレッドシートで一括変換
保存できたら、スプレッドシートに戻り、「Ctrl+R」or「Com+R」でリロードすると上部のメニューバーに「HTML変換」が出てきます。
変換したいセルをクリックし、「HTML変換」をクリックします。
最後にファイルをダウンロード
すべての編集が完了したら、スプレッドシートのシートを.csv形式でダウンロードします。
なお、ファイル名は「wordpress-blog-post.csv」とすると、Shopifyアプリでインポートする際に、ブログ記事と認識するので改名推奨です。
ステップ4:Shopifyにアプリ「Matrixify」をインストール
ここからはShopifyでの操作となります。Shopifyにアプリをインストールする方法の詳細は割愛します。
ステップ5:アプリを使いインポート
Matrixifyがインポートできたら、Shopifyの管理画面を開き左サイドバーの「Matrixify」をクリック⇒「Import」に、先ほど編集したCSVをドラッグ&ドロップします。
右下の「Import」をクリックします。
つまづきポイント
実際に移行を進める中で、特に注意が必要だったポイントをご紹介します。
①Shopifyのブログ記事にカテゴリーを追加
Shopifyの投稿タイプ(ブログ記事)は1つのみです。WordPressのようにカスタム投稿タイプを使って投稿タイプを増築することはできません。
カテゴリをわけて管理することができるので、その方法をご紹介します。
まずは「コンテンツ」⇒「ブログ記事」⇒「ブログを追加」をクリック
必要事項を記入し、「保存」をクリック
これで完了です。
②カスタムフィールドの移行
Shopify側でメタフィールドを設定する必要があります。
Shopifyの管理画面から「設定」⇒「メタフィールドおよびメタオブジェクト」をクリック
下にスクロールし、「定義を追加」をクリックします。
必要事項を記入後、「保存」をクリックします。
これで完了です。
③画像の移行
Shopifyでは1度にアップできる画像数が200枚までと決まっています。また、20MBまたは20メガピクセルを超える画像はアップできず、画像の圧縮やリサイズなどの手直しが必要になります。
そのため、画像が多い場合は200枚ずつ手動アップロードが必要となり、工数が増加します。
④Shopifyアプリの課金
1回にインポートできる記事数は、無料版ですと10記事までです。なので、移行する記事が50記事であれば、5回にわけてインポートFする必要があるということです。
5回ならいいですが、記事数が100件を超えてくると、工数も大幅に増えるので有料プランの契約を検討してもよいでしょう。
大量にインポートする場合はまずは「課金」を検討する
記事数が多い場合は有料プランの契約を検討する必要があります。プラン内容や料金は変更される可能性があるため、事前に公式情報を確認し、クライアントとすり合わせを行うことを推奨します。
また、Shopifyにリニューアルする際、通常、開発モードで開発を進めていくと思いますが、開発モードですとそのアカウントにおいてアプリの有料プランへの切り替えができません。なので、対処法として下記の3つが考えられます。
- 対処法1:公開されている別のプロジェクトでアプリを課金し、開発モードでも使えるようにする
- 対処法2:公開後に課金して移行する
- 対処法3:無料プランで移行する
まとめ
WordPressからShopifyへコンテンツを移行するのにかかる時間的コストは下記のとおりです。
- 1回のエクスポート及びインポート:1~1.5時間(移行する記事や記事数などの検討は別途かかる)
- インポート後の調整と確認作業:2時間~(※移行前の記事に特殊なCSSがあたっている場合はもっと時間がかかります。)
実際にWordPressからShopifyにブログを移行しましたが、工数として15〜20時間ほどかかった気がします。
書籍やインターネット上に情報が少なく、事前調査の段階で相当な工数を要しました。
また、お客様の大切なコンテンツを移行するため、移行前のテストも入念に行いました。
自力での移行も可能ですが、記事数が多い場合や特殊なCSSが適用されている場合は、相応の工数と技術が必要です。
コストや時間などのリソース次第ではありますが、専門業者へ依頼することも検討する価値はあると思いました。
