WordPressをAstroでヘッドレス化すると、担当者は使い慣れたWordPressで記事を更新しながら、閲覧者にはAstroで生成した軽量なページを配信できます。ただし、単にフロントエンドを置き換えれば成功するわけではありません。プレビュー、フォーム、サイト内検索、URL移行、公開トリガーまで含めて設計する必要があります。
先に結論:更新性を残して公開側を軽くしたいサイトに向く
WordPress × Astro が特に合う条件
- コーポレートサイトや採用サイトなど、閲覧中心のページが多い
- 記事更新はWordPressの管理画面で続けたい
- 表示速度、保守負荷、アクセス集中への耐性を改善したい
- 既存URLと検索流入を守りながら段階的に移行したい
反対に、会員機能、購入処理、複雑な絞り込みなどをWordPressプラグインに強く依存しているサイトは、機能ごとの代替設計が必要です。「速くしたい」という理由だけで全面移行すると、更新担当者の手間や開発費が増える場合があります。
WordPressをAstroでヘッドレス化する基本構成
ヘッドレス化では、WordPressをコンテンツ管理の「裏側」として残し、ページを表示する「表側」をAstroへ分離します。WordPressには標準のREST APIがあり、投稿・固定ページ・カテゴリなどをJSON形式で取得できます。Astro公式ドキュメントにも、WordPress REST APIを使う構成が案内されています。
公開方法は、更新時に全ページを生成する静的生成(SSG)が基本です。更新頻度やページ数が多い場合は、必要なページだけサーバーで生成するSSRや、キャッシュ戦略を組み合わせます。重要なのは「Astroなら必ず静的生成」と決め打ちせず、更新頻度と公開までの許容時間から選ぶことです。
// WordPress REST APIから公開済み記事を取得する最小例
const response = await fetch(
'https://example.com/wp-json/wp/v2/posts?_embed&per_page=10'
);
if (!response.ok) {
throw new Error('WordPressの記事取得に失敗しました');
}
const posts = await response.json(); 実運用ではページネーション、タイムアウト、再試行、下書きプレビュー、カスタム投稿タイプ、画像URLの変換も設計します。
Astroの動的ルートに記事を渡す例
投稿一覧を取得できたら、AstroのgetStaticPaths()でWordPressのスラッグとページを対応させます。次は、src/pages/blog/[slug].astroに置く最小構成です。
---
// src/pages/blog/[slug].astro
import { getPosts } from '../../lib/wordpress';
export async function getStaticPaths() {
const posts = await getPosts();
return posts.map((post) => ({
params: { slug: post.slug },
props: { post },
}));
}
const { post } = Astro.props;
---
<article>
<h1 set:html={post.title.rendered} />
<div set:html={post.content.rendered} />
</article> set:htmlはHTMLをそのまま出力します。編集権限を信頼できる運用に限定し、外部投稿や複数の寄稿者を受け付ける場合はサニタイズ処理を入れます。記事が100件を超える場合は、REST
APIのページネーションにも対応します。
従来のWordPress運用から何が変わるか
| 項目 | 従来構成 | WordPress × Astro |
|---|---|---|
| 記事更新 | WordPressで更新 | WordPressで更新。公開時に再生成 |
| ページ表示 | アクセス時にPHP・DB処理 | 生成済みHTML中心で配信 |
| テーマ | WordPressテーマ | Astroコンポーネント |
| プラグイン | 表示側の機能にも利用 | 管理側は継続可。表示側は個別に代替 |
| 障害の影響 | DB・PHP障害が公開側へ影響 | 生成済みページは公開を継続しやすい |
表示速度は構成だけで決まりません。画像サイズ、フォント、外部タグ、JavaScript量が重ければ、Astroへ移しても遅くなります。移行前後はLCP・INP・CLSを実測し、同じURL・同じ端末条件で比較します。
WordPressからAstroへ移行する7つの手順
-
URL・テンプレート・プラグインを棚卸しする
全URL、ページ種類、カスタム投稿、カスタムフィールド、フォーム、検索、会員機能、リダイレクトを一覧化します。見た目ではなく、現在のWordPressが担っている機能を先に分解します。
-
REST APIまたはGraphQLの取得方式を決める
標準投稿が中心ならREST APIから始められます。関連データをまとめて取得したい、取得項目を厳密に制御したい場合はWPGraphQLも候補です。既存プラグインとの相性まで確認します。
-
Astroでページテンプレートを再構築する
一覧、詳細、カテゴリ、固定ページをコンポーネント化します。タイトル、meta description、canonical、OGP、構造化データをテンプレート側で一元管理し、ページごとの欠落を防ぎます。
-
下書きプレビューと公開トリガーを作る
編集者が公開前に確認できるプレビューURLを用意します。公開・更新・削除をきっかけにビルドを開始するWebhookをつなぎ、失敗時の通知と再実行方法も決めます。
-
フォーム・検索・動的機能を置き換える
Contact Form 7などの表示側機能は、そのまま動くとは限りません。API、サーバーレス関数、外部検索などへ置き換え、スパム対策・エラー処理・個人情報の保存先も確認します。
-
旧URLと新URLを照合し、SEO要素を移す
可能な限りURLを維持します。変更が必要なURLは一対一で301リダイレクトし、内部リンク、canonical、XMLサイトマップも新URLに統一します。公開前に404・リダイレクトチェーン・noindex混入を機械的に検査します。
-
同条件で比較し、段階的に切り替える
主要テンプレートごとに表示、計測タグ、フォーム、構造化データを確認します。検索流入が多いページと問い合わせ導線から優先し、公開後はSearch Consoleのインデックス・クロール・検索パフォーマンスを監視します。
WordPress × Astroで失敗しやすい5つのポイント
プレビューを後回しにする
公開前確認ができず、編集者がWordPressと新サイトを往復する運用になります。
更新から公開までが長い
全件ビルドだけでは、記事数の増加とともに待ち時間が伸びます。キャッシュや差分更新を検討します。
プラグイン機能を見落とす
フォーム、検索、関連記事、目次など、テーマ内で暗黙に動く機能も棚卸し対象です。
URLを不用意に変える
移行と同時にURLまで整理すると原因切り分けが難しくなります。維持できるURLは維持します。
「Astroだから速い」で終える
画像、タグマネージャー、チャット、フォントを含め、実ページのCore Web Vitalsで判断します。
ヘッドレス化に向いているサイト・向いていないサイト
向いている
- コーポレート・採用・メディアサイト
- 閲覧が中心で、更新頻度が予測できる
- WordPressの編集体験を残したい
- デザインや表示側を長期的に改善したい
慎重に判断
- 会員・EC・予約など動的機能が中心
- 多数の表示系プラグインに依存している
- 更新直後の反映が常に必須
- 小規模で、現在の速度・保守に問題がない
Boutique Hackの掲載事例では、WordPressで運用していた企業サイトをAstroとヘッドレスCMSへ移行し、公開フローまで再設計しました。初期導入の一例は約3週間・約70万円です。ページ数、プラグイン、動的機能、既存データの状態によって期間と費用は変わります。
WordPressとAstroのヘッドレス化でよくある質問
WordPressの管理画面はそのまま使えますか?
記事作成・画像管理などは基本的に継続できます。ただし、テーマの見た目を前提にした編集機能や表示側プラグインは、Astro側での再実装が必要です。
ヘッドレス化すればSEO順位は上がりますか?
順位上昇は保証できません。表示体験やクロール可能性を改善しやすくなりますが、検索意図に合う内容、内部リンク、外部評価、既存URLの維持も必要です。
既存記事のURLは変わりますか?
同じURL構造をAstro側で再現できます。変更が避けられない場合は、旧URLから対応する新URLへ301リダイレクトを設定します。
WordPressを非公開にしても更新できますか?
管理画面やAPIを認証・ネットワークで制限する設計は可能です。ただし、Astroのビルド環境がAPIへ接続できる経路と、画像の配信方法を別途確保します。
一次情報・参考資料
WORDPRESS × ASTRO
既存サイトを見ながら、移行範囲を整理します
全面移行が必要か、一部改善で十分か。URL・プラグイン・更新フローを確認し、小さく始める案からご提案します。