WordPressの記事をEmDashに移す手順|無料プランで止まった時の対処

連載「WordPressからEmDashへ移行する」の第3回です。今回は、WordPressの記事・固定ページ・画像をEmDashに取り込み、件数が合っていることを確かめるところまで進めます。

この回のいちばんの山場は、Cloudflareの無料プランでは取り込みが途中で止まったことです。原因を突き止めて有料プランに切り替え、さらに設定を1行足して出し直して、やっと完了しました。

画面の操作は筆者が行い、件数の確認、ログの調査、設定の変更はClaude Code(パソコンの中でコマンドを打ってくれるAI)に頼みました。

✅ この記事で解決できること

  • WordPressの記事・固定ページ・画像を、公式の移行プラグインでEmDashに取り込める
  • 取り込みが「No result received from media import」で止まったときの原因と対処がわかる
  • 取り込んだあとに、件数が合っているかを確かめられる
  • 所要時間:約1時間半(止まった原因の調査と有料プランへの切り替え込み。止まらなければ10分程度)

🎯 こんな人に最適です

  • 第2回までで、EmDashを仮アドレスに立ち上げた人
  • 記事と画像が多めのWordPressサイトを移したい人
  • EmDashは無料と聞いて、Cloudflareの無料プランのまま進めようとしている人

🔧 必要な環境・前提

  • WordPress 5.6以上、PHP 7.4以上(移行プラグインの動作条件)。筆者はロリポップ、テーマはAstra+Elementor
  • 移行プラグイン EmDash Exporter 1.2.0
  • EmDash 1.4.0(第2回で仮アドレスに立ち上げたもの)
  • Cloudflare Workers(無料プラン → 途中で有料プランのWorkers Paidに切り替え)
  • 移したもの:投稿35件、固定ページ4件、画像208件、カテゴリー4・タグ90
  • 検証日:2026年10月30日

⚠️ 先に第2回までを済ませてください

バックアップがまだの人は 第1回「【図解】WordPressからEmDashへ移行する手順(準備編)」、EmDashの立ち上げがまだの人は 第2回「EmDashをCloudflareに立ち上げる手順」 を先に済ませてください。また、取り込みが終わるまでWordPressは消さず、止めないでください。EmDashは画像をWordPressから直接ダウンロードします。

📋 作業全体の流れ

  • 手順1:WordPressに移行プラグインを入れる
  • 手順2:WordPressで移行キーを作る
  • 手順3:EmDashで取り込む(接続 → 確認 → 投稿者 → メディア)
  • 手順4:止まったら、有料プランとCPUの上限を設定する
  • 手順5:件数と表示を確かめる

この記事で出てくる言葉

言葉意味
EmDash ExporterWordPressに入れる公式の移行プラグイン。EmDashがWordPressから記事を取り出せるようにする
移行キーEmDash Exporterが作る接続用の合言葉。サイトのアドレスと、取り消せるアクセス用パスワードがひとまとめになっている
※他人に見せない
インポート取り込み
コンテンツタイプ記事の種類(投稿=posts、固定ページ=pages など)
メディア画像などのファイル。EmDashではCloudflareのファイル置き場(R2)に入る
CPU時間プログラムが計算に使った時間。Cloudflare Workersは1回の処理ごとに上限がある
Workers PaidCloudflare Workersの有料プラン(月5ドル〜)
デプロイ作ったサイトをCloudflareに出すこと。設定を変えたら出し直す

手順1:WordPressに移行プラグインを入れる

公式の移行プラグイン「EmDash Exporter」を入れます。

  1. GitHubの emdash-cms/wp-emdash のリリースページを開きます。
  2. emdash-exporter.zip をダウンロードします。筆者のときの最新版は v1.2.0(2026年10月12日)でした。
  3. WordPressの「プラグイン」画面から、zipファイルをアップロードします。
  4. 有効化します。
💡
ポイント:EmDash Exporterは、WordPressの「プラグインを追加」で検索しても出てきません。公式ディレクトリに無いためです。GitHubからzipを取ってきて、アップロードで入れます。
💡
ポイント:版は1.2.0以上にしてください。1.2.0以上で、コメント・メニュー・ロゴ・ファビコンも移せます。古い版だと、これらは黙って移らず、エラーも出ないと公式ドキュメントに書かれています。

手順2:WordPressで移行キーを作る

手順2-1:サイトチェックを確かめる

  1. WordPressの「ツール」→「EmDash Migration」を開きます(英語表示)。
  2. 「Migrate to EmDash in 3 simple steps」という画面が開きます。① Site check、② Create your migration key、③ Connect from EmDash の3ステップです。
  3. ① Site checkの5項目に、すべて ✓ が付いていることを確かめます。右上に「All checks passed」と出ます。

5項目は、Pretty permalinks(パーマリンク)、Application Passwords(アプリケーションパスワード)、REST API reachable、Authorization header、Publicly reachable(外から見えるか)です。ロリポップでは、特別な設定なしで全項目に ✓ が付きました。

WordPressの「EmDash Migration」画面。Site checkの5項目がすべて ✓ で「All checks passed」。下に「Generate migration key」のボタン

手順2-2:移行キーを作ってコピーする

  1. ② の「Generate migration key」を押します。
  2. 表示された移行キーをコピーします。em1 で始まる長い文字列です。

⚠️ 移行キーは貼らない・写さない

移行キーには、WordPressに入るためのパスワードが入っています。チャットやブログ、スクショに載せないでください。

手順3:EmDashで取り込む

手順3-1:移行キーで接続する

  1. EmDashの管理画面で「インポート」を開きます。「WordPressからインポート」の画面(日本語表示)になります。
  2. 接続方法は「移行キーを貼り付け」「WordPressサイトのURLを入力」「エクスポートファイルをアップロード」の3つです。いちばん上の欄に、移行キーを貼ります。
  3. 「接続」を押します。
EmDashの「WordPressからインポート」画面。移行キー、URL、ファイルの3つの接続方法。左下に EmDash v1.4.0

左のメニューには「リダイレクト」(古いURLを新しいURLへ転送する機能)もあります。URLが変わったときに使えます(第4回で使います)。

手順3-2:取り込む内容を確認する

接続すると「確認」の画面になります。上のステップが「接続 → 確認 → インポート → メディア」の4つに増えます。

筆者の画面では、次の3種類が見つかりました。

  • post:35件 → posts(投稿)
  • page:4件 → pages(固定ページ)
  • elementor_library:1件 → 新しいコンテンツタイプ

postとpageの件数は、第1回でWordPressから書き出したファイルの件数(投稿 公開32+下書き3、ページ 公開3+下書き1)と同じでした。

「確認」画面。post 35件、page 4件、elementor_library 1件がすべてオン。設定は3つ。下に「40件がインポートされます」

elementor_libraryは、ページビルダーのElementorが使うデザイン部品の保管庫です。EmDashでは使えないので、オフにしました。

  1. elementor_libraryのスイッチをオフにします。
  2. 「インポート時の動作」が「既存のコンテンツタイプ2件にフィールドを追加します」「39件がインポートされます」に変わったことを確かめます。
  3. 設定の「サイトタイトルとキャッチフレーズ」「ロゴとファビコン」「SEO設定(Yoast)」は、オンのままにします。
  4. 「スキーマを作成してインポート」を押します。
elementor_libraryをオフにしたあとの「確認」画面。「39件がインポートされます」と、下に「キャンセル」「スキーマを作成してインポート」のボタン
💡
ポイント:移せるSEOの情報は、YoastとRank Mathの2つのプラグインの分だけです。筆者のWordPressは「SEO PACK」を使っていたので、記事ごとの説明文(検索結果に出る文)は移りませんでした。取り込んだあとに入れ直します(第4回)。

手順3-3:投稿者を割り当てる

「スキーマを作成してインポート」の次に、「投稿者を割り当て」の画面が出ます。

筆者の場合、WordPressの投稿者(32件の投稿)が、EmDashのユーザーに自動でつながっていました。「1人中1人の投稿者をメールアドレスで照合」「1件中1件を割り当て済み」と表示されます。

  1. 割り当てを確かめます。
  2. 「インポートを続行」を押します。
「投稿者を割り当て」画面。「1人中1人の投稿者をメールアドレスで照合」「1件中1件を割り当て済み」と「インポートを続行」ボタン
💡
ポイント:EmDashの初期設定(第2回)でWordPressと同じメールアドレスを使っておくと、ここが自動でつながります。

手順3-4:メディア(画像)を取り込む

記事の取り込みは数秒で終わり、「インポート」に ✓ が付いて「メディア」の画面になります。「WordPressのエクスポートには208件のメディアファイルが含まれています」と表示されました。

メディアの取り込みでは、次の3つが自動で行われます。

  • WordPressから画像をダウンロードする
  • EmDashのファイル置き場にアップロードする
  • 記事の中の画像のアドレスを、新しいものに書き換える
  1. 「メディアをインポート」を押します。
「メディア」画面。Image 208件のファイル、インポート時の動作の説明、「メディアインポートをスキップ」「メディアをインポート」のボタン

「メディアインポートをスキップ」もできます。その場合、画像はWordPressのアドレスのまま残ります。WordPressを止めると画像が出なくなるので、移行ではスキップしないでください。

手順4:止まったら、有料プランとCPUの上限を設定する

手順4-1:エラーが出て、取り込みが途中で止まる

「メディアをインポート」を押すと、赤い文字でエラーが出ました。

No result received from media import
「メディア」画面に赤いエラー「No result received from media import」

Claude Codeにデータベースの件数を数えてもらうと、取り込めていたのは一部だけでした。

  • 投稿:35件中21件(日付の新しい公開14件と下書き2件が入っていない)
  • 固定ページ:4件すべて
  • 画像:208枚中9枚

記事の「インポート」には ✓ が付いていたのに、実際は途中で止まっていました。

💡
ポイント:画面の「完了」をうのみにせず、取り込んだら必ず件数を数えてください。公式ドキュメントの「Verify before cutover」(切り替え前の確認)でも、最初の項目は「件数を数える」です。

手順4-2:原因を調べる

Claude Codeに、Cloudflareのログ(サイトで何が起きたかの記録)を手元の画面に流してもらいました。使うのは npx wrangler tail です。その状態で、もう一度「メディアをインポート」を押しました。

ログには、画像の取り込みの処理が3回成功したあと、次のメッセージで3回打ち切られた記録が残っていました。

Worker exceeded CPU time limit.
  • 原因は、Cloudflare Workersの無料プランの上限です。1回の処理で使えるCPU時間(計算に使える時間)は、10ミリ秒(0.01秒)が基本です。
  • 成功した回でも、0.6〜1.2秒使っていました。画像のダウンロード、保存、同じ画像かどうかの計算が重いためです。
  • 記事の取り込みが途中で止まったのも、同じ原因の可能性が高いです。

もう一度押すと少しずつ進みます(画像 9枚 → 15枚)。同じ画像が二重に入ることはありません。それでも、最後まで終わりませんでした。

⚠️ 「完全無料」とは限らない

参考にした動画では「完全無料」と紹介されていました。EmDash本体は無料です。ただ、実際のサイト(記事35件・画像208枚)を移すと、Cloudflareの無料プランでは取り込みが打ち切られました。記事と画像が多いサイトでは、有料プラン(月5ドル〜)が現実的です。

手順4-3:Workers Paid(有料プラン)に切り替える

  1. Cloudflareのダッシュボード(管理画面)で「Compute」→「Workers plans」を開きます。
  2. Workers Paid(月5ドル〜)を申し込みます。支払い情報は自分で入力します。
  3. 「Upgrade to Workers Paid」の画面に「Purchase complete」と出れば完了です。
「Upgrade to Workers Paid」の画面に「Purchase complete」と「Continue setup」ボタン

有料プランでは、CPU時間の上限が標準で30秒になります。

手順4-4:CPUの上限を書いて、出し直す

有料プランに切り替えてから取り込みをやり直すと、また同じエラーで止まりました(今度はCPU 2.1秒で打ち切り)。

💡
ポイント:プランを変えただけでは、すでにCloudflareに出してあるサイト(Worker)のCPUの上限は上がりませんでした。設定ファイルに上限を書いて、出し直す必要があります。筆者はここで二度手間になりました。

ここはClaude Codeが行いました。設定ファイル wrangler.jsonc(Cloudflare向けの設定ファイル)に、次の1行を足します。

"limits": { "cpu_ms": 300000 },

1回の処理で、最大5分(300,000ミリ秒)までCPUを使えるようにする設定です。足したら、出し直します(デプロイ)。

npm run deploy

手順4-5:もう一度取り込む

  1. 取り込みを最初から実行し直します。すでに入っている記事は飛ばされます。
  2. 「インポート完了」と表示されれば成功です。

筆者の画面には、次のように表示されました。

  • 14件のコンテンツをインポート・25件をスキップ(既に存在)
  • 208件のメディアファイルをインポート
  • 81件の分類項目を割り当て
  • サイト情報を適用しました(タイトル、タグライン、ロゴ)
  • 34件のコンテンツで188件の画像URLを更新しました
緑の「インポート完了」の表示と、コンテンツタイプ別の件数(posts 14件)、メディアインポートの結果

公式ドキュメントによると、取り込みはすでにある記事を飛ばすように作られています。同じ記事かどうかは、スラッグ(URLの末尾)で見分けます。画像は、中身が同じなら使い回されます。

取り込みの流れ(接続 → 確認 → インポート → メディア)と、無料プランで止まった場所、有料プラン+CPU上限の設定で完了するまでの図

手順5:件数と表示を確かめる

手順5-1:件数を照らし合わせる

Claude Codeに、WordPressから書き出したファイルとEmDashのデータベースの件数を比べてもらいました。頼み方は次のとおりです。

WordPressの書き出しファイルと、EmDashのデータベースで、投稿・固定ページ・カテゴリー・タグ・画像の件数を、公開と下書きに分けて比べて
種類WordPressEmDash
投稿公開32+下書き3=3535 ✓
固定ページ公開3+下書き1=44 ✓
カテゴリー/タグ4/904/90 ✓
画像208件保存されたファイルは203 ✓
※中身がまったく同じ画像は1つにまとめられる仕様。重複5件分が少ない

下書きは、下書きのまま入りました。ただし、WordPressでスラッグ(URL)が空だった下書きには、タイトルから日本語のスラッグや post-554 のような名前が付きました。

手順5-2:記事の表示を確かめる

取り込んだ記事のページを開きます。画像は、EmDash側のアドレス(/_emdash/api/media/file/…)から出ていました。WordPressのアドレスのままの画像は0件でした。

取り込んだ記事の上部。テンプレートのままの黒い画面に、タイトル、タグ、アイキャッチ画像
記事の中のボックス部分。文章は残っているが、色と枠が消えて普通の箇条書きになっている

この時点で、次の課題が見つかりました。どれも第4回で直します。

  • URLが変わった(旧 /claude-freee-invoice/ → 新 /posts/claude-freee-invoice)。古いURLは「見つかりません」になる
  • 記事の冒頭の「✅ この記事で解決できること」などのボックスは、文章は残ったが、色と枠が消えた
  • 読了時間「1 min read」が、長い記事でも1分と表示される
  • お問い合わせページのURLが日本語のまま
  • SEO PACKの説明文が移っていない

うまくいかないときは

症状原因対処
プラグインの検索でEmDash Exporterが出てこない公式ディレクトリに無いGitHub(emdash-cms/wp-emdash)のリリースからzipを取り、アップロードで入れる
メニューやロゴが移らないEmDash Exporterが1.2.0より古い1.2.0以上にしてから取り込む
「No result received from media import」Workers無料プランのCPU時間の上限で、処理が打ち切られているWorkers Paidに切り替え、wrangler.jsonc に "limits": { "cpu_ms": 300000 } を足して出し直す
有料プランにしたのに、まだ同じエラー出してあるWorkerのCPUの上限が上がっていない上のlimitsを書いて出し直す
※プランを変えるだけでは足りない
画面は「完了」なのに記事が足りない途中で打ち切られていた件数を数える。足りなければ、原因を直してから取り込みをやり直す(入っている記事は飛ばされる)
記事ごとのSEOの説明文が移らない移せるのはYoastとRank Mathの分だけ取り込んだあとに入れ直す(第4回)
画像の数が少し少ない中身が同じ画像は1つにまとめられる仕様。記事の画像が表示されていれば問題ない

まとめ

  • 移行プラグイン「EmDash Exporter」は、GitHubからzipを取ってきて入れます。版は1.2.0以上にします。
  • WordPressの「ツール」→「EmDash Migration」で移行キーを作り、EmDashの「インポート」に貼って取り込みます。
  • Cloudflareの無料プランでは、画像の取り込みがCPU時間の上限で打ち切られました。Workers Paid(月5ドル〜)に切り替え、wrangler.jsonc にCPUの上限を書いて出し直すと完了しました。
  • 画面の「完了」をうのみにせず、取り込んだら件数を数えます。

この回の終わりの時点で、仮アドレスのEmDashに、記事35件・固定ページ4件・画像208件がそろいました。見た目はまだテンプレートのままで、URLもWordPressと違います。本番のmanual-chang.comは、まだ古いWordPressのままなので、読者からは何も変わって見えません。

次回は、第4回「EmDashでデザイン・フォーム・SEOを作り直す手順|移行後の仕上げ」です。URLを元に戻し、ボックスの見た目とお問い合わせフォームを作り直します。

連載の他の回

この記事を書いた人

hiroshi