EmDashはWordPressからコンテンツを移行します。管理ダッシュボードを通じて投稿、ページ、メディア、タクソノミーをインポートします。
始める前に
コンテンツをエクスポート
WordPressでツール → エクスポートに移動し、完全なエクスポートファイル(.xml)をダウンロードします。
サイトをバックアップ
移行が成功したことを確認するまで、WordPressサイトを稼働させ続けてください。
インポート方法
EmDashはWordPressコンテンツをインポートするための3つの方法をサポートしています:
| 方法 | 最適な用途 | 下書きを含む | 認証が必要 |
|---|---|---|---|
| WXRファイルアップロード | 完全な移行 | はい | いいえ |
| WordPress.com | WordPress.comホストサイト | はい | OAuth |
| REST API(プローブ) | エクスポート前のコンテンツ確認 | いいえ | オプション |
WXRファイルアップロードは、ほとんどの移行に推奨されます。下書き、カスタムフィールド、非公開投稿を含むすべてのコンテンツをキャプチャします。
WXRファイルインポート
-
WordPressからエクスポート
WordPress管理画面で、ツール → エクスポート → すべてのコンテンツ → エクスポートファイルをダウンロードに移動します。
-
インポートウィザードを開く
EmDashで、管理 → 設定 → インポート → WordPressに移動します。
-
エクスポートファイルをアップロード
.xmlファイルをドラッグ&ドロップするか、クリックして参照します。ファイルはブラウザで解析されます。 -
検出されたコンテンツを確認
ウィザードは見つかったものを表示します:
Found in export: ├── Posts: 127 → posts [New collection] ├── Pages: 12 → pages [Add fields] └── Media: 89 attachments -
マッピングを設定
インポートする投稿タイプを切り替えます。EmDashは自動的に:
- マッピングされていない投稿タイプの新しいコレクションを作成
- 既存のコレクションに不足しているフィールドを追加
- フィールドタイプの競合について警告
-
インポートを実行
コンテンツをインポートをクリックします。各アイテムが処理されると進行状況が表示されます。
-
メディアをインポート(オプション)
コンテンツのインポート後、メディアファイルをダウンロードするかどうかを選択します。EmDashは:
- WordPress URLからダウンロード
- コンテンツハッシュで重複排除
- コンテンツ内のURLを自動的に書き換え
コンテンツ変換
GutenbergからPortable Textへ
EmDashはGutenbergブロックを構造化コンテンツ形式であるPortable Textに変換します。
| Gutenbergブロック | Portable Text | 注記 |
|---|---|---|
core/paragraph | block style=“normal” | インラインマークが保持される |
core/heading | block style=“h1-h6” | ブロック属性からレベル |
core/image | image block | メディア参照が更新される |
core/list | block with listItem type | 順序付きと順序なし |
core/quote | block style=“blockquote” | 引用が含まれる |
core/code | code block | 言語属性が保持される |
core/embed | embed block | URLとプロバイダーが保存される |
core/gallery | gallery block | 画像参照の配列 |
core/columns | columns block | ネストされたコンテンツが保持 |
| 不明なブロック | htmlBlock | 生のHTMLがレビュー用に保持 |
不明なブロックは、元のHTMLとブロックメタデータを持つhtmlBlockとして保存されます。手動でレビューして変換するか、カスタムPortable Textコンポーネントを作成してレンダリングできます。
クラシックエディターのコンテンツ
クラシックエディターのHTMLはPortable Textブロックに変換されます。インラインスタイル(<strong>、<em>、<a>)はスパン上のマークになります。
ステータスマッピング
| WordPressステータス | EmDashステータス |
|---|---|
publish | published |
draft | draft |
pending | pending |
private | private |
future | scheduled |
trash | archived |
タクソノミーインポート
カテゴリーとタグは、階層を保持したタクソノミーとしてインポートされます:
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フィールドはインポート中に分析されます:
-
分析フェーズ
ウィザードはカスタムフィールドを検出し、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) -
フィールドマッピング
内部WordPressフィールド(
_edit_、_wp_で始まる)はデフォルトで非表示です。SEOプラグインフィールドはseoオブジェクトにマッピングされます。 -
タイプ推論
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に適応させる際にこの表を使用してください:
| WordPress | EmDash | 注記 |
|---|---|---|
register_post_type() | 管理UIのコレクション | ダッシュボードまたはAPI経由で作成 |
register_taxonomy() | タクソノミーまたは配列フィールド | 複雑さに依存 |
register_meta() | コレクションスキーマのフィールド | 型付き、キー値ではない |
WP_Query | getCollection(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_options | ctx.kv | キー値ストア |
wp_postmeta | コレクションフィールド | 構造化、キー値ではない |
$wpdb | ctx.storage | 直接ストレージアクセス |
| Categories/Tags | タクソノミー | 階層サポートが保持される |
APIインポート(高度)
WordPressインポートは管理ダッシュボードとREST APIを通じて利用可能です。最高のエクスペリエンスのために管理ダッシュボードインポートウィザードを使用してください — フィールドマッピング、競合解決、進行状況追跡を提供します。
インポートAPIエンドポイントは、プログラマティックアクセスのために/_emdash/api/import/wordpress/配下にあります。
トラブルシューティング
「XML解析エラー」
エクスポートファイルが破損しているか不完全である可能性があります。WordPressから再エクスポートしてください。
メディアダウンロードの失敗
一部の画像は認証の背後にあるか、移動されている可能性があります。インポートは続行され、失敗したURLは手動処理のためにログに記録されます。
フィールドタイプの競合
既存のコレクションに互換性のないタイプのフィールドがある場合、インポートウィザードは競合を表示します。次のいずれかを行います:
- EmDashフィールドの名前を変更
- WordPressフィールドマッピングを変更
- コレクションを削除して再作成
大きなエクスポート
100MBを超えるエクスポートの場合、以下を検討してください:
- WordPressで投稿タイプを個別にエクスポート
- 各ファイルを順次インポート
- 信頼性のためにCLIで
--resumeを使用
次のステップ
- コンテンツインポート — その他のインポートソースと方法
- プラグインの移植 — WordPressプラグイン機能を移行
- コンテンツの操作 — インポートしたコンテンツをクエリおよびレンダリング