コンテンツにスキップ

WordPressからEmDashへの移行

EmDashはWordPressからの完全な移行パスを提供します。投稿、ページ、メディア、タクソノミーを管理ダッシュボードからインポートできます。CLIは不要です。

まずより高レベルな移行の概要を知りたい場合は、WordPressからAstroへ(EmDashを使用)とEmDash vs WordPressをお読みください。

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

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

サイトをバックアップ

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

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

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

ほとんどの移行には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を自動的に書き換え

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コンポーネントを作成してレンダリングできます。

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

Section titled “クラシックエディターのコンテンツ”

クラシックエディターからの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

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

インポート後、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のastro.config.mjs内の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タクソノミー階層サポートは維持される

WordPressインポートは管理ダッシュボードとREST APIから利用可能です。最適な体験のためには管理ダッシュボードのインポートウィザードを使用してください — フィールドマッピング、競合解決、進捗追跡を提供します。

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

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

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

既存のコレクションに互換性のない型のフィールドがある場合、インポートウィザードが競合を表示します。以下のいずれかを選択してください:

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

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

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