WordPressから移行する

このページ

EmDashはWordPressからコンテンツを移行します。管理ダッシュボードを通じて投稿、ページ、メディア、タクソノミーをインポートします。

始める前に

コンテンツをエクスポート

WordPressでツール → エクスポートに移動し、完全なエクスポートファイル(.xml)をダウンロードします。

サイトをバックアップ

移行が成功したことを確認するまで、WordPressサイトを稼働させ続けてください。

インポート方法

EmDashはWordPressコンテンツをインポートするための3つの方法をサポートしています:

方法最適な用途下書きを含む認証が必要
WXRファイルアップロード完全な移行はいいいえ
WordPress.comWordPress.comホストサイトはいOAuth
REST API(プローブ)エクスポート前のコンテンツ確認いいえオプション

WXRファイルアップロードは、ほとんどの移行に推奨されます。下書き、カスタムフィールド、非公開投稿を含むすべてのコンテンツをキャプチャします。

WXRファイルインポート

  1. WordPressからエクスポート

    WordPress管理画面で、ツール → エクスポート → すべてのコンテンツ → エクスポートファイルをダウンロードに移動します。

  2. インポートウィザードを開く

    EmDashで、管理 → 設定 → インポート → WordPressに移動します。

  3. エクスポートファイルをアップロード

    .xmlファイルをドラッグ&ドロップするか、クリックして参照します。ファイルはブラウザで解析されます。

  4. 検出されたコンテンツを確認

    ウィザードは見つかったものを表示します:

    Found in export:
    ├── Posts: 127 → posts [New collection]
    ├── Pages: 12  → pages [Add fields]
    └── Media: 89 attachments
  5. マッピングを設定

    インポートする投稿タイプを切り替えます。EmDashは自動的に:

    • マッピングされていない投稿タイプの新しいコレクションを作成
    • 既存のコレクションに不足しているフィールドを追加
    • フィールドタイプの競合について警告
  6. インポートを実行

    コンテンツをインポートをクリックします。各アイテムが処理されると進行状況が表示されます。

  7. メディアをインポート(オプション)

    コンテンツのインポート後、メディアファイルをダウンロードするかどうかを選択します。EmDashは:

    • WordPress URLからダウンロード
    • コンテンツハッシュで重複排除
    • コンテンツ内のURLを自動的に書き換え

コンテンツ変換

GutenbergからPortable Textへ

EmDashはGutenbergブロックを構造化コンテンツ形式であるPortable Textに変換します。

GutenbergブロックPortable Text注記
core/paragraphblock style=“normal”インラインマークが保持される
core/headingblock style=“h1-h6”ブロック属性からレベル
core/imageimage blockメディア参照が更新される
core/listblock with listItem type順序付きと順序なし
core/quoteblock style=“blockquote”引用が含まれる
core/codecode block言語属性が保持される
core/embedembed blockURLとプロバイダーが保存される
core/gallerygallery block画像参照の配列
core/columnscolumns blockネストされたコンテンツが保持
不明なブロックhtmlBlock生のHTMLがレビュー用に保持

不明なブロックは、元のHTMLとブロックメタデータを持つhtmlBlockとして保存されます。手動でレビューして変換するか、カスタムPortable Textコンポーネントを作成してレンダリングできます。

クラシックエディターのコンテンツ

クラシックエディターのHTMLはPortable Textブロックに変換されます。インラインスタイル(<strong><em><a>)はスパン上のマークになります。

ステータスマッピング

WordPressステータスEmDashステータス
publishpublished
draftdraft
pendingpending
privateprivate
futurescheduled
trasharchived

タクソノミーインポート

カテゴリーとタグは、階層を保持したタクソノミーとしてインポートされます:

WordPress:                    EmDash:
├── Categories (hierarchical) ├── taxonomies table
│   ├── News                  │   ├── category/news
│   │   ├── Local             │   ├── category/local (parent: news)
│   │   └── World             │   ├── category/world (parent: news)
│   └── Sports                │   └── category/sports
└── Tags (flat)               └── content_taxonomies junction
    ├── featured                  ├── tag/featured
    └── breaking                  └── tag/breaking

カスタムフィールドとACF

WordPressの投稿メタとACFフィールドはインポート中に分析されます:

  1. 分析フェーズ

    ウィザードはカスタムフィールドを検出し、EmDashフィールドタイプを提案します:

    Custom Fields:
    ├── subtitle (string, 45 posts)
    ├── _yoast_wpseo_title → seo.title (string, 127 posts)
    ├── _thumbnail_id → featuredImage (reference, 89 posts)
    └── price (number, 23 posts)
  2. フィールドマッピング

    内部WordPressフィールド(_edit__wp_で始まる)はデフォルトで非表示です。SEOプラグインフィールドはseoオブジェクトにマッピングされます。

  3. タイプ推論

    EmDashは値からフィールドタイプを推論します:

    • 数値文字列 → number
    • "1""0""true""false"boolean
    • ISO日付 → date
    • シリアライズされたPHP/JSON → json
    • WordPress ID(例:_thumbnail_id)→ reference

URLリダイレクト

インポート後、EmDashはリダイレクトマップを生成します:

{
	"redirects": [
		{ "from": "/?p=123", "to": "/posts/hello-world" },
		{ "from": "/2024/01/hello-world/", "to": "/posts/hello-world" },
		{ "from": "/category/news/", "to": "/categories/news" }
	],
	"feeds": [
		{ "from": "/feed/", "to": "/rss.xml" },
		{ "from": "/feed/atom/", "to": "/atom.xml" }
	]
}

これらのリダイレクトを以下に適用します:

  • Cloudflareリダイレクトルール
  • ホスティングプラットフォームのリダイレクト設定
  • astro.config.mjsのAstroのredirectsオプション

概念マッピングリファレンス

WordPressパターンをEmDashに適応させる際にこの表を使用してください:

WordPressEmDash注記
register_post_type()管理UIのコレクションダッシュボードまたはAPI経由で作成
register_taxonomy()タクソノミーまたは配列フィールド複雑さに依存
register_meta()コレクションスキーマのフィールド型付き、キー値ではない
WP_QuerygetCollection(filters)ランタイムクエリ
get_post()getEntry(collection, id)エントリまたはnullを返す
wp_insert_post()POST /_emdash/api/content/{type}REST API
the_content<PortableText value={...} />Portable Textレンダリング
add_shortcode()Portable Textカスタムブロックカスタムコンポーネントレンダラー
register_block_type()Portable Textカスタムブロックショートコードと同じ
add_menu_page()プラグイン管理ページ/_emdash/admin/配下
add_action/filter()プラグインフックhooks.content:beforeSave
wp_optionsctx.kvキー値ストア
wp_postmetaコレクションフィールド構造化、キー値ではない
$wpdbctx.storage直接ストレージアクセス
Categories/Tagsタクソノミー階層サポートが保持される

APIインポート(高度)

WordPressインポートは管理ダッシュボードとREST APIを通じて利用可能です。最高のエクスペリエンスのために管理ダッシュボードインポートウィザードを使用してください — フィールドマッピング、競合解決、進行状況追跡を提供します。

インポートAPIエンドポイントは、プログラマティックアクセスのために/_emdash/api/import/wordpress/配下にあります。

トラブルシューティング

「XML解析エラー」

エクスポートファイルが破損しているか不完全である可能性があります。WordPressから再エクスポートしてください。

メディアダウンロードの失敗

一部の画像は認証の背後にあるか、移動されている可能性があります。インポートは続行され、失敗したURLは手動処理のためにログに記録されます。

フィールドタイプの競合

既存のコレクションに互換性のないタイプのフィールドがある場合、インポートウィザードは競合を表示します。次のいずれかを行います:

  • EmDashフィールドの名前を変更
  • WordPressフィールドマッピングを変更
  • コレクションを削除して再作成

大きなエクスポート

100MBを超えるエクスポートの場合、以下を検討してください:

  1. WordPressで投稿タイプを個別にエクスポート
  2. 各ファイルを順次インポート
  3. 信頼性のためにCLIで--resumeを使用

次のステップ