企業の顔として長年運用してきたWordPressのコーポレートサイト。
「プラグインを更新するたびに表示崩れが起きて胃が痛い」「セキュリティ警告や改ざん対策のメンテナンスに追われている」「表示速度(PageSpeed Insights)のスコアが上がらずSEOに悪影響が出ている」といった課題を抱えていませんか?
近年、こうしたWordPress特有の運用・保守コストから脱却するため、フロントエンドとバックエンド(管理画面)を分離する「ヘッドレスCMS(microCMS)+ 静的サイトジェネレーター(Next.js / Astro)」へのリプレイスに踏み切る企業が急速に増えています。
「でも、これまで蓄積したお知らせやブログ記事のデータをどうやって移行すればいいの?」「SEOの検索順位を落とさずに安全に移管できるの?」と疑問に思う方も多いはずです。
本記事では、現役Webエンジニアが実践するWordPressからmicroCMSへの移行ワークフロー、データ抽出からスキーマ設計、インポートスクリプト、フロントエンド実装、DNS切り替え時のSEO対策まで、3,000字オーバーで徹底解説します!
1. なぜコーポレートサイトをmicroCMSへ移行するのか?4大メリット
具体的な移行手順に入る前に、従来のWordPress(モノリシック構成)と比較して得られる圧倒的な恩恵を整理しておきましょう。
| 比較項目 | 従来のWordPress | microCMS + モダンフロントエンド |
|---|---|---|
| セキュリティ | 本体・プラグインの脆弱性による改ざんリスクが常にある | 静的配信のためPHPやDBがサーバー上に存在せず、原理的に改ざん不可能 |
| 保守コスト | 毎月のプラグイン更新・PHPバージョン対応が必須 | CMSのアップデートはmicroCMS側が自動管理。運用保守フリー |
| 表示速度(Core Web Vitals) | アクセスごとにDB問い合わせが発生し、重くなりやすい | ビルド済みのHTML/CSS/JSをCDN配信するため爆速(90点〜100点台) |
| 障害・アクセス耐性 | 急激なアクセス集中(テレビ放映やSNS拡散)でサーバーダウン | CloudflareやVercelなどのグローバルCDNが処理するため絶対に落ちない |
2. 移行プロジェクトの全体ロードマップ
WordPressからmicroCMSへの移行は、大きく分けて以下の5つのステップで進行します。
- データ棚卸し・WordPressからのデータエクスポート(XMLまたはREST API)
- microCMS側でのAPIスキーマ設計(お知らせ・プレスリリース・事例など)
- データ変換と一括インポート(Management APIの活用)
- フロントエンド構築(Astro / Next.js等での静的生成・Webhook連携)
- DNS切り替え・リダイレクト(301)設定(SEO評価の継承)
3. ステップ1:WordPressから既存記事データをエクスポートする
まずは、WordPress内に保存されている投稿データを安全に抽出します。移行データ量や構造に応じて2通りのアプローチがあります。
アプローチA:標準の「エクスポート」機能(XML形式)
WordPress管理画面の ツール > エクスポート から「投稿」を選択し、XMLファイル(WXR形式)をダウンロードします。手軽ですが、microCMSへ投入する前にXMLをパース(構文解析)してJSONへ変換する処理が必要になります。
アプローチB:WordPress REST APIを使ったJSON直接取得(推奨)
移行作業用のローカルスクリプト等から、WordPress標準のREST API(/wp-json/wp/v2/posts)を叩いてJSON形式で全記事を一括取得する手法です。アイキャッチ画像のURLやカスタムフィールドの値も整った形式で直接ハンドリングできるため、開発者にとって最も扱いやすい方法です。
# REST APIから記事一覧を取得するエンドポイント例
GET https://example.com/wp-json/wp/v2/posts?per_page=100&page=1&_embed
4. ステップ2:microCMS側でAPIスキーマ(データ構造)を設計する
WordPressの「投稿」や「カスタム投稿タイプ」に合わせて、microCMSの管理画面で新しいAPIを作成します。
一般的なコーポレートサイトのAPI設計例(お知らせ・ニュース)
microCMSでは「リスト形式」のAPIを選択し、以下のフィールドを定義します。
- タイトル(テキストフィールド):
title - 公開日(日時フィールド):
publishedAt(※WordPressの過去の投稿日時を維持したい場合はカスタム日時フィールドdateを用意) - カテゴリ(セレクトフィールド または 別API参照):
category - アイキャッチ画像(画像フィールド):
thumbnail - 本文(リッチエディタ または HTMLフィールド):
content - 旧スラッグ(テキストフィールド):
slug(※URL構造を引き継ぐために必須)
5. ステップ3:データをmicroCMSへ一括インポートする
記事数が数十件〜数百件以上ある場合、手作業でのコピペ移行は現実的ではありません。microCMSが提供する**「マネジメントAPI(Management API)」**を利用し、Node.js等のスクリプトで自動流し込み(一括インポート)を行います。
Node.jsによるデータ移行スクリプトのサンプルコード
// import-posts.mjs
import fetch from 'node-fetch';
const MICROCMS_SERVICE_DOMAIN = 'your-service-subdomain';
const MICROCMS_API_KEY = 'your-management-api-key';
const ENDPOINT = 'news'; // microCMSのAPIエンドポイント名
// 移行用データのサンプル配列(WordPressから抽出・整形したデータ)
const posts = [
{
title: 'コーポレートサイトリニューアルのお知らせ',
slug: 'renewal-2026',
content: '<p>いつもご利用いただきありがとうございます。本日サイトを刷新いたしました。</p>',
category: ['news'],
publishedAt: '2026-04-01T10:00:00.000Z'
}
];
async function importToMicroCMS() {
for (const post of posts) {
try {
const response = await fetch(`https://${MICROCMS_SERVICE_DOMAIN}.microcms.io/api/v1/${ENDPOINT}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-MICROCMS-API-KEY': MICROCMS_API_KEY,
},
body: JSON.stringify(post),
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = await response.json();
console.log(`Successfully imported: ${post.title} (ID: ${result.id})`);
} catch (error) {
console.error(`Failed to import: ${post.title}`, error);
}
}
}
importToMicroCMS();
※画像の移行について:WordPressの wp-content/uploads/ に保存されている画像群は、CloudinaryやS3、またはmicroCMSのメディア管理へアップロードし、記事本文内の画像URLを一括置換(RegEx置換)しておくのが鉄則です。
6. ステップ4:フロントエンド構築とWebhook自動ビルド
コーポレートサイトのフロントエンドには、表示速度とSEOの観点からAstroやNext.js(SSG / ISR)の採用が最も推奨されます。
AstroでのmicroCMSデータ取得とページ生成例
microCMS公式のSDK(microcms-js-sdk)を使用すれば、TypeScriptの型安全性を保ちながら直感的にコンテンツを取得できます。
---
// src/pages/news/[id].astro
import { createClient } from 'microcms-js-sdk';
const client = createClient({
serviceDomain: import.meta.env.MICROCMS_SERVICE_DOMAIN,
apiKey: import.meta.env.MICROCMS_API_KEY,
});
export async function getStaticPaths() {
const data = await client.getList({ endpoint: 'news' });
return data.contents.map((content) => ({
params: { id: content.slug || content.id },
props: { post: content },
}));
}
const { post } = Astro.props;
---
<article>
<h1>{post.title}</h1>
<time datetime={post.publishedAt}>{post.publishedAt.slice(0, 10)}</time>
<div class="entry-content" set:html={post.content} />
</article>
更新作業をWordPress並みに快適にするWebhook設定
microCMSで記事を「公開」「更新」「削除」した瞬間に、ホスティング環境(Cloudflare Pages、Vercel、Netlify等)へWebhook通知を飛ばし、自動的にサイトを再ビルド(またはオンデマンド再生成)する設定を行います。これにより、非エンジニアの運用担当者でもWordPressと全く変わらない感覚で即座に記事をWeb上に反映させることができます。
7. ステップ5:絶対に失敗できない「SEO評価の引き継ぎ(301リダイレクト)」
コーポレートサイトの移管で最も恐ろしいのが、「リニューアル後にGoogle検索からの流入が激減すること」です。SEO評価を失わないために、以下の3点は徹底的に遵守してください。
① パーマリンク構造(URL)を極力維持する
WordPress時代のURLが /news/company-announcement/ だった場合、新サイトでも全く同じURLパスで表示できるようにルーティングを設計します。
② URLが変わる場合は必ず「301リダイレクト」を設定する
ディレクトリ構造を変更する場合は、新環境のCDN(Cloudflareのエッジリダイレクトやホスティング側の _redirects 設定)で、古いURLから新しいURLへ恒久的な転送(301 Redirect)を1対1で設定します。
# Cloudflare Pages / Netlify の _redirects 記述例
/archives/1234 /news/new-product-launch 301
/category/press/* /news/press/:splat 301
③ Google Search Consoleへのサイトマップ再送信
新サイト公開直後にXMLサイトマップ(sitemap.xml)を生成・公開し、Google Search Consoleから再送信してクローラーの巡回を促します。
8. まとめ:セキュアで高速な次世代コーポレートサイトへ
WordPressからmicroCMSへの移行は、単なるツールの変更ではなく、**「保守・セキュリティの恐怖から会社を永久に解放し、Webサイトの表示速度とユーザー体験を劇的に引き上げる投資」**です。
- WordPressのREST APIを活用して記事と画像データを正確に抽出する。
- microCMSで柔軟なスキーマを設計し、Management APIで自動インポートする。
- AstroやNext.jsと組み合わせて静的生成(SSG)を行い、爆速表示を実現する。
- パーマリンクの維持と301リダイレクトを徹底し、SEO資産を確実に保護する。
「プラグインの更新に怯える日々」を終わらせ、本業のマーケティングやコンテンツ発信に集中できる強固なWeb基盤を手に入れましょう!

