2026年10月22日更新

「EmDashに移したい。でも記事が300本ある」。WordPressからの移行相談で、最初に出てくるのがこの一言です。

工数は記事の本数では決まりません。WXRやEmDash Exporterで運べないものを、取り込みの前にどれだけ洗い出せるかで決まります。

2026年10月のPHP本体の緊急の脆弱性(php.netのセキュリティ勧告)以降、同じ相談がまた増えています。当面の対処は「PHPに緊急の脆弱性2件(2026年10月)WordPressサイトで今日やること」にまとめました。

ここでは棚卸し6項目から切り替え前の確認までを、2026年10月時点の仕様で確かめた順に並べています。

移行前の棚卸しは6項目。表にすると見積もりが組める

移行の工数は、記事数より、EmDashに素直に入らないものの量で決まります。

ポイントは6つです。

  • プラグイン
  • フォーム
  • ACFなどのカスタムフィールド
  • ユーザーと著者
  • URLの形
  • メディア

着手前に、この6つをWordPressの管理画面で確かめて表に埋めます。うちでは見積もりの前に、この表を先方と一緒に作るのが基本です。表の手が要る列が埋まった時点で、移行の工数はほぼ見えるものです。

項目

WordPressで見る場所

EmDashでの扱い

手が要るところ

プラグイン

「プラグイン」の一覧

機能は移らない

1本ずつ要否を決める

フォーム

Contact Form 7などの設定

移らない

別の仕組みで作り直す

ACFなどのカスタムフィールド

ACFのフィールドグループ

WXRは項目の一覧だけ。値はExporter経由で、複雑な型はJSONで入る

入れ先の項目を先に作る

ユーザーと著者

「ユーザー」の一覧

著者はユーザーに割り当て、残りは署名として入る

誰にログインを渡すか決める

URLの形

「設定 → パーマリンク」

対応表は自分で作る

リダイレクトを登録する

メディア

「メディア」ライブラリの量

取り込み時に旧サイトからダウンロード

失敗した画像を手当てする

入口は3つ。基本はWXR、カスタムフィールドまで運ぶならExporter

取り込みの入口は3種類あり、どれを使うかで運べる範囲が変わります。管理画面の「インポート」を開くと、3つが縦に並んだ画面が出ます。

EmDash管理画面のWordPressインポート画面。移行キー、サイトURL、WXRファイルのアップロードの3つの入口
綴のローカル環境のインポート画面(撮影時はEmDash 0.32.0で、本番の1.3.1でも並びは同じ)。上から移行キー、URLでの接続、WXRファイルのアップロードの順に並ぶ

WXRファイルは記事と分類の引っ越し用

自己ホストのWordPressなら、まずはWXRファイルが基本です。WXRはWordPress標準の書き出し形式(.xml)で、「ツール → エクスポート → すべてのコンテンツ」から出せます。書き出しの手順はWordPress公式のエクスポート画面の説明のとおりです。

入るのは投稿・固定ページ・カスタム投稿タイプ・カテゴリとタグ・再利用ブロック・著者です。再利用ブロックは記事扱いでなく、「セクション」として入ります。カテゴリとタグ以外の独自の分類は、EmDash側に同じ分類を作っていないと飛ばされます。WXRにはコメントも入っていますが、WXRの取り込みでは移りません。画像そのものはファイルに入っておらず、URLだけが入っています。

EmDash Exporterはカスタムフィールドとメニューも運ぶ

ACFの値やSEOプラグインの設定まで運ぶなら、WordPress側に EmDash Exporter プラグインを入れる経路を使います。 WXRだけではカスタムフィールドは「こういう項目がありました」という一覧で終わり、値は入りません。

Exporterを入れると「ツール → EmDash Migration」で移行キーが発行でき、これを画面上段に貼って接続します。EmDash公式の移行ガイドによると、Exporter経由ではカスタムフィールドとACFの値、YoastやRank Mathのタイトルと説明も運べます。移行キーでの接続と、コメント・メニュー・ロゴ・ファビコンの移行は、Exporter 1.2.0以降が前提です。

URL入力は、Exporterがなければ規模の確認まで

中段の「WordPressサイトのURLを入力」は、Exporterが入っていなければ公開REST APIを見に行くだけです。WordPressかどうかと記事数はわかりますが、これ単体では取り込めません。先方から書き出しファイルが届く前に、規模感だけつかみたいときに使います。Exporterが入っているサイトなら、WordPressのアプリケーションパスワードで認可して、URLからそのまま取り込めます。

取り込みは4段。流し直したときのクセを知っておく

ウィザードは「Connect → Review → インポート → メディア」の4段です。画像を含まないファイルなら、メディアの段は出ません。

ポイントは2つです。

  • 各段でやること
  • 同じファイルを流し直したときの動き
WordPressからEmDashへの移行の流れ。書き出す、解析する、マッピングを決める、実行してメディアを取り込む、リダイレクトを当てる

各段でやること

Connectでファイルを渡すと、Reviewで投稿タイプごとの件数と入れ先のコレクションが出ます。既存のコレクションに同じ名前で型の違うフィールドがあると、その投稿タイプは取り込めません。型を勝手に変換しない作りなので、「コンテンツタイプ」で項目をそろえてから進めます。

著者はEmDashのユーザーに割り当てるのが基本です。割り当てなかった著者は、ログインできない署名(byline)として入ります。本文が終わったらメディアの段で画像をダウンロードし、本文中のURLを書き換えます。

同じファイルを流し直したときの動き

突き合わせはWordPressの記事IDではなく、コレクション・スラッグ・言語の組で行われます。 以前この記事に「IDで突き合わせる」と書いていましたが、現行の公式ガイドとEmDash 1.3.1の実装を読み直して訂正しました。

テスト環境で通してから本番という順番は、そのまま踏めます。ただ、途中で先方がスラッグを変えると、流し直したときに同じ記事が2本できます。画像はファイル名ではなく中身のハッシュで同一判定されるので、同じ画像が増えることはありません。

そのまま入らないものを、先に把握しておく

自動で運べるのは本文と分類までです。状態とプラグイン機能は、手で手当てする前提で工程を組みます。

ポイントは3つです。

  • 予約と非公開の記事
  • サーバー側で描くブロック
  • プラグインの機能
WXRインポートで自動で入るもの、注意が要るもの、手で作り直すもの

非公開は下書きで入り、予約は日時しだい

公開済みの記事は公開のまま入ります。非公開とレビュー待ちは下書きになり、閲覧制限は作り直されません。予約投稿は、本番で使っているEmDash 1.3.1では予約日時が未来なら予約のまま入り、日時を過ぎていれば下書きになります。予約の設定に失敗した記事は下書きのまま残り、取り込み結果のエラー一覧に出るものです。 公式の移行ガイドにはまだ「予約日時は作り直されない」とあり、実装のほうが先に進んでいます。0.32以前のEmDashでは予約投稿も下書きで入っていたので、古い版で移行するなら予約し直しが要ります。切り替え前に予約の一覧を控え、EmDash側の予約日時と突き合わせてください。

サーバー側で描くブロックは中身が出ない

GutenbergのブロックとクラシックエディタのHTMLは、どちらもPortable Text(構造を保ったまま持つ本文形式)に変換されます。段落・見出し・画像・リスト・引用・コードはそのまま移ります。

「最新の投稿」のようにサーバー側で中身を描くブロックは、保存されたHTMLを持たないので、元のブロックのコメントだけを入れたHTMLブロックとして入ります。画面には何も出ません。プラグイン独自のブロックは、保存されていたHTMLがそのままHTMLブロックに入り、装飾のない状態で表示されることがあります。どちらも、作り直すか消すかを1種類ずつ決めます。

プラグインの機能は作り直し

フォーム、会員機能、独自のショートコードは移りません。WordPressではプラグインがPHPで動かしていた部分なので、EmDash側では別の仕組みで組み直します。フォームの組み直しはヘッドレスサイトのフォームとメール送信の記事で、ACF風の項目をEmDashでどう組むかはField Kitの記事で書いています。

順位を守るのはリダイレクト。CMSで受けるURLと外で受けるURLを分ける

移行で技術的にいちばん怖いのは、本文よりもURLが変わることです。旧URLを放置すると、積み上げてきた検索の評価がそこで切れます。

ポイントは3つです。

  • 旧URLを先に全部書き出す
  • EmDashのリダイレクト画面で受ける
  • CMSで受けられないURLは外で受ける

旧URLを先に全部書き出す

以前の版では「EmDashがリダイレクトマップを出力する」と書いていましたが、現行の公式ガイドにその記述はありません。旧サイトをクロールしてURLの一覧を作り、新しいURLとの対応表を自分で起こします。Googleのサイト移転のガイドも、新しいサイトを準備したあと、旧URLと新URLの対応表(URLマッピング)を用意してからリダイレクトを設定する手順です。

EmDashのリダイレクト画面で受ける

EmDashには管理画面に「リダイレクト」があり、ここで旧URLを受けられます。ルールはデータベースに入るので、足すたびにビルドやデプロイは要りません。

EmDashのリダイレクト作成画面。ソースパス、転送先パス、ステータスコード301、グループの入力欄
管理画面の「リダイレクト」で「新しいリダイレクト」を開いたところ。[param]と[...rest]でパターンを書ける(画面のみで保存はしていない)

パスは [param] が1階層、[...rest] が残り全部を受ける書き方で、旧サイトのURLの形が1種類なら数行で全記事を受けられます。パターンのルールは末尾のスラッシュを補わないので、旧サイトのURLの形に合わせて書きます。 多くのWordPressは末尾がスラッシュで終わるので、例は /[year]/[month]/[slug]/ です。完全一致のルールはスラッシュの有無を補って照合しますが、パターンのルールは補いません(EmDash 1.3.1の実装で確認)。スラッシュなしで届くリンクがあるなら、同じパターンをスラッシュなしでももう1本登録します。同じ画面の「404エラー」タブで、取りこぼしたURLも後から拾えます。ただし次の節で書くとおり、拡張子の付いたURLとクエリで記事を指すURLはこのログに残りません。綴のサイトでも、404ログの上位は /wp-json/ などを探りに来るアクセスでした。ログの読み方はリダイレクトと404ログの記事に書いています。

CMSで受けられないURLは外で受ける

EmDashのリダイレクトはパスだけを見ています。拡張子の付いたパスは、リダイレクトの判定をせずに通常の表示処理へ回します(EmDash 1.3.1の実装で確認)。判定の手前で処理が抜けるので、404ログにも残りません。/?p=123 のようなURLはトップページとして表示されるので、こちらも404ログには出ません。

旧URLの例

受ける場所

理由

/2024/01/hello-world/

EmDashのリダイレクト

パターン /[year]/[month]/[slug]/ で受けられる

/category/news/

EmDashのリダイレクト

パスだけで判定できる

/feed/

EmDashのリダイレクト

RSSの購読者を新しいフィードへ送る

/?p=123

Cloudflareなど

パスは「/」だけで、記事の番号はクエリにある

/about.html

Cloudflareなど

拡張子の付いたパスはEmDashがリダイレクトの判定をしない

/wp-content/uploads/2024/01/photo.jpg

Cloudflareなど

旧サイトの画像のURLも拡張子付きなので、EmDashでは受けられない

/?p=123 や .html のURLは、Cloudflareのリダイレクトルールのように、クエリ文字列や拡張子を条件にできる層で受けます。ただ、Cloudflareの無料プランで作れるリダイレクトルールは1つのゾーンに10本までです(プランごとの上限)。記事の番号ごとに行き先を変える件数が多いなら10本では足りないので、Workerで番号と新しいURLの対応表を引くといった受け方を組み合わせます。

詰まる場所と、切り替え前に確かめること

詰まる場所はだいたい決まっていて、切り替え前に確かめる項目も決まっています。

ポイントは2つです。

  • 当日に慌てやすい3点
  • 切り替え前のチェックリスト

当日に慌てやすい3点

  1. XMLの解析エラー:書き出しが途中で切れているか、文字コードを変えるツールを通しています。WordPress側で書き出し直します
  2. 画像のダウンロード失敗:ログインの裏にある画像や、すでに消えた画像です。取り込みは止まらず、失敗分が一覧に残るので後から手当てします
  3. Cloudflareのボット対策で止まる:旧サイトがCloudflareの裏にあると、Exporterの通信や画像の取得が弾かれることがあります。公式ガイドは、Exporterの通信と /wp-content/uploads/ を対策の対象から外す設定を案内しているものです。無料プランのBot Fight Modeはこの設定で外せないので、取り込みのあいだだけオフにして終わったら戻します

切り替え前のチェックリスト

旧WordPressとバックアップは、戻す必要が無くなるまで残しておきます。リニューアル全体で順位を落とさない段取りはリニューアルで順位を落とさない手順の記事にまとめています。

よくある質問

WordPressのPHPを更新すれば、移行は急がなくていいですか

当面の危険は、PHPを修正版に更新すれば止まります。PHP 8.1以前は通常の修正版が配布されていないので、まず8.2以上へ切り替えてください。移行は、PHPやプラグインの更新を誰がいつまで追うのかを決める話です。更新を追い続ける体制があるなら、急いで移行する理由にはなりません。

WXRとExporter、どちらを使えばいいですか

カスタムフィールドやSEOの設定を使っているならExporterです。WXRでは値が入らず、項目の一覧が出るだけです。記事と分類だけのブログなら、WXRで足ります。

移行中、旧サイトはいつ止めればいいですか

旧URLの一覧を叩いて全部が301で新しいURLに着き、404ログにも新しい取りこぼしが出なくなってからです。拡張子付きのURLとクエリ付きのURLは404ログに出ないので、一覧での確認が欠かせません。画像の取り込み中は旧サイトから画像を落とすので、少なくとも取り込みが終わるまでは動かしておきます。

まとめ

綴は、WordPressからEmDashへの引っ越しと、EmDash以外も含めたPHPに依存しないCMSへの移行をお手伝いしています。棚卸しの表づくりから一緒に始められるので、移行できるかの事前調査だけでもお問い合わせからご相談ください。進め方は「WordPressからの移行をお手伝いします|EmDash・PHPに依存しないCMSへの引っ越し」にまとめています。

本記事は2026年10月時点の情報です。