ハンズオン:WordPressの記事を移す
完成するもの
- WordPressの投稿・固定ページなどを取り込んだEmDashのサイト
- 取り込んだ内容を、元のWordPressサイトと突き合わせた確認結果
EmDashの管理画面で、WordPressサイトの解析、互換性のあるコレクションの準備、コンテンツのインポート、メディアのコピー、URLの書き換えまでを進めます。取り込んだサイトの確認が終わるまで、WordPressのサイトは残しておきます。(公式「WordPressからの移行」)
所要時間
目安:60分(移す記事とメディアの量によって変わります)
AIエージェントによる実測のあとに、この時間を更新します。
必要なもの
| 種類 | 必要なもの | 補足 |
|---|---|---|
| EmDashのサイト | メディアをコピーする場合は、ストレージを設定済みのサイト | 「ハンズオン:AIとブログを作って公開する」で作ったサイトを使えます |
| アカウント | EmDashの管理者アカウント | WordPressのインポートには import:execute の権限が必要です。最初に作ったユーザーは必ず管理者になります(公式「認証」) |
| バックアップ | WordPressのデータベースと wp-content/uploads のバックアップ |
作業の前に用意します |
| 移行元のデータ | WordPress eXtended RSS(WXR)の完全なエクスポートファイル、またはWordPressサイトにインストールしたEmDash Exporterプラグイン | どちらを使うかはステップ2で決めます |
| ツール | 生成AIツール | ターミナルでコマンドを実行できるAIツール(Claude Code、Cursor、Codexなど)、またはチャット型のAI(ChatGPT、Claudeのチャットなど)。使い方の違いは「依頼文の使い方」で説明します |
手順の全体像
図のテキストを読む
flowchart TD
S1["1. 移行前の記録を取る"] --> S2["2. インポート方法を選ぶ"]
S2 -->|WXR| S3A["3a. WXRファイルを書き出す"]
S2 -->|EmDash Exporter| S3B["3b. 移行キーを発行する"]
S3A --> S4["4. 管理画面でインポート"]
S3B --> S4
S4 --> S5["5. メディアを取り込む"]
S5 --> S6["6. 切り替え前の確認"]
依頼文の使い方
- 依頼文は、そのままコピーしてAIに貼り付けられる形にしています。
- WordPressのパスワード、アプリケーションパスワード、移行キーはAIに送らないでください。
- AIツールによって、コマンドを実行する人が違います。依頼文はどちらの種類でも同じ文面で使えます。
- ターミナルでコマンドを実行できるAIツール(Claude Code、Cursor、Codexなど):依頼文を渡すと、AIがコマンドを実行します。
- チャット型のAI(ChatGPT、Claudeのチャットなど):AIが示したコマンドを、自分でターミナルに貼って実行します。
ステップ
ステップ1:移行前の記録を取る
移行を始める前に、移行後のサイトで維持する必要があるものを記録します。公式ドキュメントが挙げる項目は、現在のパーマリンク構造、正規のオリジン(canonical origin)、リダイレクト、メニュー、使っている投稿タイプ、タクソノミー、プラグインが持つフィールドです。
ステップ2:インポート方法を選ぶ
インポートの方法は2つあります。
Exporterを使わずにサイトのURLだけを入力した場合は、WordPressの公開REST APIを調べるだけです。WordPressかどうかの判定や、公開されている投稿・固定ページ・メディアの数は分かりますが、REST APIから直接インポートすることはできません。(公式「WordPressからの移行」)
ステップ3a:WXRファイルを書き出す(WXRを使う場合)
WordPressで「ツール → エクスポート」を開き、「すべてのコンテンツ」を選択して、XMLのエクスポートファイルをダウンロードします。WXRファイルはWordPressのサーバー上のメディアを指しているだけで、添付ファイルそのものは含みません。(公式「WordPressからの移行」)
ステップ3b:移行キーを発行する(EmDash Exporterを使う場合)
WordPressで「ツール → EmDash Migration」を開き、移行キーを発行します。発行したキーを、EmDashのインポート画面に貼り付けます。
WordPressサイトのURLを入力する方法もあります。Exporterが検出されると、WordPressのアプリケーションパスワードの画面で、EmDashとの接続を許可します。ローカルのHTTPの開発サイトでは、許可のあとの戻り先にHTTPSが必要なため、WordPressのユーザー名とアプリケーションパスワードを手動で入力します。(公式「WordPressからの移行」)
ステップ4:管理画面でインポートする
- EmDashのサイドバーで「インポート」を開くか、
/_emdash/admin/import/wordpressにアクセスします。 - WXRファイルをアップロードするか、Exporterの移行キーを貼り付けるか、WordPressのURLを入力します。
- 解析結果を確認します。WordPressの投稿タイプごとに、取り込み先のコレクション、必須フィールド、既存フィールドとの互換性を確認します。
- WordPressの投稿者をEmDashのユーザーに割り当てます。割り当てのない投稿者は、ゲストのバイラインとして表示できます。表示上のクレジットのためにEmDashのログインを発行する必要はありません。
- Exporterでインポートする場合は、メニュー、サイトタイトルとキャッチフレーズ、ロゴとファビコン、対応しているSEOの値を取り込むかを選択します。WXRの場合、この選択肢はありません。
- インポートを開始します。EmDashは、足りないコレクションとフィールドを作ってから、エントリーを作ります。
ステップ5:メディアを取り込む
添付ファイルが見つかった場合は、メディアの手順を実行します。EmDashは元のファイルをダウンロードし、設定済みのストレージに保存して、本文中の該当するURLを書き換えます。ダウンロードが終わるまで、元のサイトにアクセスできる状態を保ちます。(公式「WordPressからの移行」)
ステップ6:切り替え前に確認する
取り込んだサイトを、元のサイトと突き合わせて確認します。新しいサイトが本番で問題なく動き、巻き戻しが不要になるまで、バックアップとWordPressのサイトは残しておきます。(公式「WordPressからの移行」)
うまくいかないときの確認点
| 症状 | 確認すること | 公式ページ |
|---|---|---|
| XMLファイルを解析できない | WordPressの「ツール → エクスポート」からもう一度書き出し、ダウンロードが完了したかを確認します。文字コードを変えるツールでXMLを編集しないでください | WordPressからの移行(トラブルシューティング) |
| コレクションが「非互換」と表示される | 既存のフィールドに、同じスラッグで型の違うものがあります。投稿タイプの取り込み先を変えるか、「コンテンツタイプ」でフィールドを調整してからやり直します。準備の段階では足りないフィールドは追加されますが、既存のフィールドの型は変わりません | WordPressからの移行(トラブルシューティング)、コンテンツのインポート(トラブルシューティング) |
| メディアのURLをダウンロードできない | 元の添付ファイルに、WordPressにログインしていない状態でアクセスできるかを確認します。認証が必要なメディア、削除されたファイル、プライベートネットワークのアドレスへのリダイレクトは、個別に失敗してメディアのエラー一覧に残ります | WordPressからの移行(トラブルシューティング) |
| サイトは検出されたが、直接インポートできない | wordpress-rest の結果は調査だけです。WXRファイルをアップロードするか、EmDash Exporterをインストールしてもう一度調べます |
コンテンツのインポート(トラブルシューティング) |
| インポートが途中で止まった | 既存のコンテンツは、WordPressのIDではなく、コレクション・スラッグ・ロケールで照合されます。やり直しの間にスラッグが変わった場合は、両方のエントリーを確認して重複を手作業で解消します。中断したあとは、WordPressのサイトを削除したりリダイレクトしたりしないでください | WordPressからの移行(途中まで進んだインポートのやり直し) |
このほかの症状は「つまずきやすいポイント」にまとめています。
根拠にした公式ページ
- WordPressからの移行:https://docs.emdashcms.com/migration/from-wordpress/
- コンテンツのインポート:https://docs.emdashcms.com/migration/content-import/
- 認証:https://docs.emdashcms.com/guides/authentication/
- AIツール向けDocs MCP:https://docs.emdashcms.com/docs-mcp/