![WordPress Headless CMS: 開発者向けガイド [2026]](/_next/image?url=https%3A%2F%2Fmedia.techsy.io%2Ftechsy-io%2Fhero-220-1200x630.webp&w=3840&q=75)
WordPress Headless CMS: 開発者向けガイド [2026]
W3Techsによると、WordPressは全ウェブサイトの43%を動かしており、PHPによるフロントエンドを完全に排除し、コンテンツAPIとしてのみ利用するチームが増えています。REST APIとWPGraphQLの選択から、Vercel上でのISR(Incremental Static Regeneration)を用いたNext.jsフロントエンドのデプロイまで、WordPressをヘッドレスで運用するために知っておくべきすべてを解説します。
Headless WordPressとは?(なぜ注目すべきか)
Headless WordPressとは、WordPressがコンテンツの管理と保存を担当し、Next.js、Nuxt、Astro、またはその他のフレームワークで構築された別のフロントエンドアプリケーションがAPIを通じてそのコンテンツを取得する構成です。WordPressは管理ダッシュボード、エディター、プラグインエコシステム、MySQLデータベースを維持しますが、PHPテーマでページをレンダリングする代わりに、WordPress REST APIまたはWPGraphQLを介してコンテンツを公開し、フロントエンドがプレゼンテーション層を完全に担当します。
これをこう考えてみてください。WordPressは厨房であり、フロントエンドフレームワークはレストランです。厨房が料理(コンテンツ)を用意しますが、レストランが盛り付け方、ダイニングルームの雰囲気、ゲストの食事体験を決定します。
従来型 vs ヘッドレスアーキテクチャ
従来のWordPressでは、すべてがモノリス構造です。訪問者がページをリクエストすると、PHPがリクエストを処理し、MySQLにクエリを実行し、テーマのテンプレートファイルを通して処理を行い、レンダリングされたHTMLを返します。レイアウト、スタイリング、ルーティングなど、すべてをテーマが制御します。
一方、Headless WordPressでは、このレンダリング層全体を取り除きます。WordPressは通常、WP EngineやKinstaなどのマネージドホスティング上でAPIの背後に存在します。React、Vue、またはSvelteアプリであるフロントエンドは、APIリクエストを行ってコンテンツを取得し、好きなようにレンダリングします。これら2つのシステムは、完全に異なるサーバー、異なる技術スタック、異なるデプロイパイプライン上で動作することができます。
ここで多くのガイドが見過ごしがちな微妙な点があります。**Decoupled(疎結合)とHeadless(ヘッドレス)**は全く同じものではありません。Decoupled WordPressは、特定のページ(管理画面やレガシールートなど)でPHPレンダリングにフォールバックすることがあります。完全なHeadlessとは、WordPressのフロントエンドが完全に無効化され、APIのみを提供し、テーマによるレンダリングが一切行われない状態を意味します。本ガイドでは、この完全なHeadlessアプローチについて説明します。
Headless化するべき時(と従来型を維持すべき時)
フロントエンド開発者が最新のツールを使って作業したい場合、複数のチャネル(Web、モバイルアプリ、デジタルサイネージ)にコンテンツを配信する必要がある場合、またはパフォーマンスが絶対条件である場合に、Headless化は理にかなっています。しかし、これは誰にとっても正解ではなく、そのことを正直に認識することで、無駄な労力を数週間節約できます。
Headless化すべき場合...
- チームがすでにReact/Vue/Svelteを知っている。 フロントエンド開発者が毎日JSXを書いているなら、彼らにPHPテーマを使わせるのは、シェフに電子レンジで料理させるようなものです。
- マルチチャネル配信が必要である。 1つのWordPressバックエンドから、同じAPIを通じてマーケティングサイト、モバイルアプリ、店舗のキオスク端末へコンテンツを供給できます。
- パフォーマンスが必須要件である。 CDNエッジから配信される静的ページは、共有サーバー上のPHPレンダリングよりも常に高速です。
- Headless WooCommerceを運用している。 複雑なeコマースフロントエンドは、カスタムのReact/Next.jsストアフロントから大きな恩恵を受けます。
- 最新のDX(開発者体験)を求めている。 ホットモジュールリプレースメント、TypeScript、コンポーネントライブラリ、CI/CDなど、フロントエンドツールチェーンの全てを利用できます。
従来型を維持すべき場合...
- コンテンツ編集者がライブプレビューとページビルダーを必要としている。 Gutenberg、Elementor、WPBakeryは従来のテーマを前提としています。Headless化すると、ほとんどのビジュアル編集ワークフローが使えなくなります。
- 個人開発者または小規模チームである。 Headless化はセットアップの複雑さを40〜60%増加させます。ブログを一人で維持しているだけなら、従来のテーマの方がシンプルです。
- フロントエンドプラグインに大きく依存している。 コンタクトフォーム、SEOプラグイン(Yoastはメタタグをサーバーサイドでレンダリングします)、Cookie同意バナーなどは、PHPレンダリングを前提としています。
- 予算が限られている。 WordPressとフロントエンドのために別々のホスティングが必要です。請求書が1枚ではなく2枚になります。
| シナリオ | Headless化すべき? | 理由 |
|---|---|---|
| フロントエンド開発者3名のマーケティングサイト | はい | チームが最新のDXとより良いパフォーマンスを得られる |
| 個人ブログ、個人管理者 | いいえ | オーバーヘッドに見合わない |
| マルチブランドコンテンツハブ | はい | 1つのバックエンドで多くのフロントエンドに対応 |
| プラグイン重視のサイト(フォーム、SEO、ページビルダー) | いいえ | ほとんどのプラグインはPHPレンダリングを必要とする |
| カスタムUIを持つWooCommerceストア | はい | Reactストアフロントはテーマベースのものより優れている |
| ライブプレビューが必要なコンテンツ編集者 | いいえ | Headless化はビジュアル編集を壊す |
REST API vs WPGraphQL: データ層の選択
Headless構成でWordPressからコンテンツを取得する方法は2つあります。組み込みのREST APIとWPGraphQLプラグインです。REST APIはWordPressコアに含まれており、プラグインなしでそのまま動作します。WPGraphQLはプラグインのインストールが必要ですが、必要なフィールドだけをクエリできるため、RESTを悩ませる過剰フェッチ(over-fetching)の問題を解消します。私たちの経験では、ほとんどのプロジェクトでWPGraphQLが優れていますが、RESTにはネイティブHTTPキャッシングという過小評価されている利点が1つあります。
WordPress REST API: 組み込みオプション
REST APIはWordPressバージョン4.7(2016年12月)以降、すべてのインストールで利用可能です。/wp-json/wp/v2/postsにアクセスするとJSONが返されます。シンプルで文書化されており、設定ゼロで動作します。
ただし、欠点は過剰フェッチです。投稿をリクエストすると、WordPressはすべてを返します:レンダリングされたコンテンツ、生コンテンツ、抜粋、著者ID、アイキャッチ画像ID、カテゴリ、タグ、メタフィールド、GUID、コメントステータス、ピングステータス、テンプレート、そしておそらく不要な他の約15のフィールド。タイトル、スラッグ、抜粋だけが必要なブログ一覧ページの場合、必要なデータの3〜5倍のデータ転送が発生します。
// REST API: Fetch 5 recent posts with author and categories
const res = await fetch(
'https://your-site.com/wp-json/wp/v2/posts?per_page=5&_embed'
);
const posts = await res.json();
// The _embed parameter includes author and category objects
// But also includes EVERY field on each post -- ~8KB per post
// For 5 posts, you're looking at ~40KB of JSON_fieldsパラメータを使用して返されるフィールドを制限することはできます(?_fields=id,title,slug,excerpt)が、埋め込みリソースには役立たず、関連データが必要な場合は依然として複数のリクエストを行う必要があります。
WPGraphQL: 必要なものだけをクエリ
WPGraphQLは、Jason Bahlによって作成された無料のオープンソースプラグイン(現在はWP Engineによってメンテナンスされています)で、WordPressに完全なGraphQL APIを追加します。欲しいフィールドを正確に指定してクエリを作成すると、まさにそのデータだけが返され、余分なものは何もありません。
# WPGraphQL: Same query -- 5 recent posts with author and categories
query RecentPosts {
posts(first: 5) {
nodes {
title
slug
excerpt
date
author {
node {
name
}
}
categories {
nodes {
name
slug
}
}
}
}
}
# Response: ~2KB of precisely structured JSON
# No extra fields, no bloatコード比較
実際のレスポンスペイロードは以下のようになります。
| 側面 | REST API | WPGraphQL |
|---|---|---|
| セットアップ | 組み込み、設定不要 | プラグインインストールが必要 |
| クエリの精度 | すべてのフィールドを返す(_fieldsでフィルタ可能) | リクエストされたフィールドのみを返す |
| ペイロードサイズ(5投稿) | _embed使用時 ~40KB | ターゲットクエリ時 ~2KB |
| キャッシング | ネイティブHTTPキャッシング(ETags、304) | 永続化クエリまたはGETリクエストが必要 |
| 関連データ | 複数のリクエストまたは_embed | ネストされたフィールドを持つ単一クエリ |
| スキーマ発見 | RESTディスカバリーエンドポイント | GraphQLイントロスペクション + GraphiQL IDE |
| 認証 | アプリケーションパスワード、JWT | アプリケーションパスワード、JWT |
| ACFサポート | 組み込み(ACFはRESTにフィールドを公開) | WPGraphQL for ACFプラグインが必要 |
どちらを選ぶべきか?
RESTを使用する場合: 何かを素早く構築しているとき、チームがGraphQLを知らないとき、または追加のツールなしで積極的なHTTPキャッシングが必要なとき。
WPGraphQLを使用する場合: 複雑なデータニーズを持つ本番用フロントエンドを構築しているとき、小さなペイロードを望むとき、またはチームがすでに他の場所でGraphQLを使用しているとき。
結論: Next.jsを使用した本格的なHeadless WordPressプロジェクトでは、WPGraphQLがより良い選択です。ペイロードの削減、GraphiQL IDEによる開発者体験、単一リクエストでのデータ取得は、プラグイン依存というコストを支払う価値があります。
Headless CMSとしてのWordPressの設定
WordPressをHeadless CMSとして設定するには6つのステップがあります。WordPressのインストール、適切なプラグインの追加、コンテンツモデルの構成、フロントエンドテーマの無効化、認証の設定、APIの動作確認です。以前に行ったことがあれば全体のプロセスは約30〜45分、初めての場合は数時間かかります。
ステップ1: マネージドホスティング上で新しいWordPressインストールから始めます。Kinsta、WP Engine、CloudwaysはすべてWordPressに最適化された環境を提供しています。実験的な用途であれば、LocalWPを使ったローカルインストールでも問題ありません。
ステップ2: 必須プラグインをインストールします。
| プラグイン | 目的 | 必須? |
|---|---|---|
| WPGraphQL | WordPress用GraphQL API | はい(GraphQL使用の場合) |
| Advanced Custom Fields (ACF) | 構造化コンテンツフィールド | はい |
| WPGraphQL for ACF | ACFフィールドをGraphQL経由で公開 | はい(WPGraphQL使用時) |
| Custom Post Type UI | GUI経由でカスタム投稿タイプを登録 | オプション(コードでも可) |
| WP Headless | フロントエンドを無効化し、APIにリダイレクト | オプション(手動でも可) |
ステップ3: ACFでコンテンツモデルを作成します。フロントエンドコンポーネントに対応するフィールドグループを定義します。ポートフォリオ投稿タイプには、projectUrl、techStack(リピーター)、clientName、projectYearなどのフィールドがあるかもしれません。
必須プラグイン
WPGraphQL for ACFは特別な注意が必要です。これがないと、ACFフィールドはGraphQLクエリに表示されません。インストール後、カスタムフィールドを以下のようにクエリできます。
query PortfolioProjects {
projects(first: 10) {
nodes {
title
slug
projectFields {
projectUrl
clientName
techStack
projectYear
}
}
}
}WordPressフロントエンドの無効化
ステップ4: 訪問者がWordPress URLにアクセスして壊れたテーマを見ることは避けたいでしょう。テーマのfunctions.phpにこれを追加するか、mu-pluginを使用してください。
// Redirect all frontend requests to the API
add_action('template_redirect', function () {
if (!is_admin() && !wp_doing_ajax() && !defined('REST_REQUEST') && !defined('GRAPHQL_REQUEST')) {
wp_redirect('https://your-frontend-domain.com');
exit;
}
});ステップ5: 認証用にアプリケーションパスワードを設定します。ユーザー > プロフィール > アプリケーションパスワードに進み、パスワードを生成し、外部ツールからのコンテンツ作成/更新などの認証済みAPIリクエストに使用します。
APIのテスト
ステップ6: ブラウザを開いてhttps://your-site.com/graphqlにアクセスし、GraphiQL IDEが表示されることを確認します。投稿をクエリしてみてください。RESTを使用している場合は、https://your-site.com/wp-json/wp/v2/postsに移動し、JSONが返されることを確認します。
プロのヒント: WPGraphQLに付属するGraphiQL IDEは、スキーマを探索するのに本当に優れています。オートコンプリート、ドキュメント、クエリ履歴が利用できます。利用可能なフィールドやACFデータの構造を把握する最速の方法です。
WPGraphQLを使用したNext.jsフロントエンドの構築
2026年にHeadless WordPressフロントエンドを構築する最もクリーンな方法は、Next.js 15のApp RouterとReact Server Componentsを使用することです。Server ComponentsはクライアントにJavaScriptを送信せずにサーバー上でデータをフェッチし、WPGraphQLは正確なクエリを提供するため、自然な組み合わせとなります。私が初めてWPGraphQLをNext.js App Routerとセットアップした際、最大の落とし穴は画像処理でしたが、それについては後ほど触れます。
プロジェクトセットアップと環境変数
新しいNext.jsプロジェクトから始めます。Vercelは、リファレンスアーキテクチャが必要な場合、公式のWordPressスターターテンプレートも提供しています。
npx create-next-app@latest my-wp-frontend --typescript --app
cd my-wp-frontendWordPressエンドポイントを含む.env.localを作成します。
WORDPRESS_API_URL=https://your-wordpress-site.com
NEXT_PUBLIC_WORDPRESS_GRAPHQL_ENDPOINT=https://your-wordpress-site.com/graphql次に、軽量なGraphQLフェッチユーティリティを作成します。Server ComponentsにはApolloやurqlは必要なく、単純なfetchで完璧に動作します。クライアント側の状態を管理する必要がないためです。
// lib/wordpress.ts
const API_URL = process.env.NEXT_PUBLIC_WORDPRESS_GRAPHQL_ENDPOINT!;
export async function fetchGraphQL<T>(
query: string,
variables?: Record<string, unknown>
): Promise<T> {
const res = await fetch(API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query, variables }),
next: { revalidate: 3600 }, // ISR: revalidate every hour
});
const json = await res.json();
if (json.errors) {
throw new Error(json.errors[0].message);
}
return json.data;
}Reactフレームワークの選択肢については、Next.js vs Viteを使用したプレーンReactの比較をご覧ください。フレームワークをスキップする正当な理由もありますが、Headless CMS作業では、組み込みのSSRとISRによりNext.jsが実用的な選択となります。また、Next.jsとRemixの間で迷っている場合は、なぜほとんどのプロジェクトでNext.jsを推奨するかに関する記事で詳しく解説しています。
Server Componentsを使用した投稿の取得
ブログ一覧ページをServer Componentとして実装します。useEffectも、ローディング状態も、クライアントサイドのハイドレーションもありません。
// app/blog/page.tsx
import { fetchGraphQL } from '@/lib/wordpress';
import Link from 'next/link';
interface PostsData {
posts: {
nodes: Array<{
title: string;
slug: string;
excerpt: string;
date: string;
author: { node: { name: string } };
}>;
};
}
const POSTS_QUERY = `
query AllPosts {
posts(first: 20, where: { status: PUBLISH }) {
nodes {
title
slug
excerpt
date
author {
node {
name
}
}
}
}
}
`;
export default async function BlogPage() {
const data = await fetchGraphQL<PostsData>(POSTS_QUERY);
return (
<main>
<h1>Blog</h1>
{data.posts.nodes.map((post) => (
<article key={post.slug}>
<Link href={`/blog/${post.slug}`}>
<h2>{post.title}</h2>
</Link>
<p>{post.author.node.name} · {new Date(post.date).toLocaleDateString()}</p>
<div dangerouslySetInnerHTML={{ __html: post.excerpt }} />
</article>
))}
</main>
);
}動的投稿ページ
個別の投稿ページでは、generateStaticParamsを使用してビルド時にすべての投稿を事前レンダリングし、その後ISRが新しいコンテンツを取得します。
// app/blog/[slug]/page.tsx
import { fetchGraphQL } from '@/lib/wordpress';
import { notFound } from 'next/navigation';
const POST_QUERY = `
query PostBySlug($slug: ID!) {
post(id: $slug, idType: SLUG) {
title
content
date
author {
node {
name
avatar {
url
}
}
}
categories {
nodes { name slug }
}
}
}
`;
export async function generateStaticParams() {
const data = await fetchGraphQL<{
posts: { nodes: Array<{ slug: string }> };
}>(`query { posts(first: 100) { nodes { slug } } }`);
return data.posts.nodes.map((post) => ({ slug: post.slug }));
}
export default async function PostPage({
params,
}: {
params: Promise<{ slug: string }>;
}) {
const { slug } = await params;
const data = await fetchGraphQL<{ post: any }>(POST_QUERY, {
slug,
});
if (!data.post) notFound();
return (
<article>
<h1>{data.post.title}</h1>
<div dangerouslySetInnerHTML={{ __html: data.post.content }} />
</article>
);
}WordPress画像用にnext.config.tsを構成することを忘れないでください。
// next.config.ts
const nextConfig = {
images: {
remotePatterns: [
{
protocol: 'https',
hostname: 'your-wordpress-site.com',
pathname: '/wp-content/uploads/**',
},
],
},
};
export default nextConfig;本番環境へのHeadless WordPressのデプロイ
本番環境のHeadless WordPressセットアップでは、デュアルホスティングを使用します。WordPressはマネージドWordPressホスティング(WP Engine、Kinsta、またはCloudways)上に存在し、Next.jsフロントエンドはVercelやNetlifyなどのエッジプラットフォームにデプロイされます。この分離により、各層は独立してスケールでき、WordPressはコンテンツ編集とAPIリクエストを処理し、フロントエンドは世界中のCDNエッジノードから静的およびISRページを提供します。
ホスティングアーキテクチャ
データフローは以下のようになります。コンテンツ編集者がWordPress管理画面で公開し、WordPressがMySQLにコンテンツを保存します。Next.jsフロントエンドがWPGraphQL経由でコンテンツを取得し、Vercelがエッジで静的HTMLを生成します。訪問者はCDNにアクセスし、WordPressに直接触れることはありません。
フロントエンドホスティングについては、詳細な内訳のためにVercel vs Netlifyの比較をご覧ください。どちらもHeadless WordPressに適しています。コンテナベースの代替案を検討している場合は、Railway、Render、Fly.ioの比較も参考にしてください。
ISRとオンデマンド再検証
これが、Headless WordPressを実際に本番環境で viable(実行可能)にする部分です。オンデマンド再検証はセットアップの手間に見合う価値があります。これがないと、古いコンテンツ(長い再検証間隔)と遅いビルド(WordPress APIを圧迫する短い間隔)のどちらかを選ばざるを得なくなるからです。
ISRを使用すると、各ページにrevalidate時間を設定できます。その間隔の後、次の訪問者はキャッシュされたページを取得し、Next.jsはバックグラウンドでそれを再生成します。しかし、真の魔法はオンデマンド再検証にあります。コンテンツが公開された瞬間にリビルドをトリガーします。
// app/api/revalidate/route.ts
import { revalidatePath } from 'next/cache';
import { NextRequest, NextResponse } from 'next/server';
export async function POST(request: NextRequest) {
const secret = request.headers.get('x-revalidation-secret');
if (secret !== process.env.REVALIDATION_SECRET) {
return NextResponse.json({ message: 'Invalid secret' }, { status: 401 });
}
const body = await request.json();
const slug = body.post?.post_name;
if (slug) {
revalidatePath(`/blog/${slug}`);
revalidatePath('/blog'); // Also revalidate the listing page
}
return NextResponse.json({ revalidated: true });
}WordPress側では、WP Webhooksのようなプラグインまたはシンプルなfunctions.phpスニペットを使用して、publish_post時にフックを発火させ、Vercelの/api/revalidateエンドポイントを呼び出します。これで、「公開」を押してから数秒以内にコンテンツがライブになり、フルリビルドも待ち時間もありません。詳細な構成オプションについては、Next.js ISRドキュメントを参照してください。
コスト内訳
| コンポーネント | サービス | 月額コスト |
|---|---|---|
| WordPressホスティング | Cloudways | $14-28 |
| WordPressホスティング | WP Engine | $20-50 |
| WordPressホスティング | Kinsta | $35-65 |
| フロントエンドホスティング | Vercel (Hobby) | 無料 |
| フロントエンドホスティング | Vercel (Pro) | $20 |
| フロントエンドホスティング | Netlify (Pro) | $19 |
| WPGraphQLプラグイン | オープンソース | 無料 |
| 典型的な合計 | Cloudways + Vercel Hobby | $14 |
| 本番環境合計 | WP Engine + Vercel Pro | $40-70 |
WordPress Headless vs 専用Headless CMS
WordPress Headlessと、Sanity、Contentful、Strapiなどの専用CMSの両方を扱った経験から、率直な意見を述べます。WordPress Headlessは、既存のWordPressサイトまたはコンテンツチームがある場合の実用的な選択です。しかし、ゼロから始める際には、ほとんど最佳の選択ではありません。
WordPress Headlessが勝つ場所
- コンテンツ編集者がすでに知っている。 WordPressの管理UIは20年の洗練があります。非技術的なチームにSanity StudioやContentfulのインターフェースを訓練するには数週間かかります。
- プラグインエコシステム。 60,000以上のプラグイン。多言語対応が必要?WPML。eコマース?WooCommerce。SEOコンテンツ分析?Yoast(管理画面では依然として機能します)。この広範さに匹敵する専用CMSはありません。
- 採用。 WordPressはあらゆるCMSの中で最大の開発者人材プールを持っています。WordPress開発者を見つけることは、SanityやPayloadの専門家を見つけるよりも劇的に簡単です。
- WooCommerce。 WordPressコンテンツとHeadless eコマースが必要な場合、WooCommerce + WPGraphQLは実証済みのスタックです。SaleorやMedusaは代替案ですが、WooCommerceは市場シェアを持っています。
専用CMSが勝つ場所
- コンテンツモデリング。 SanityのGROQ、Contentfulのコンテンツタイプ、PayloadのTypeScriptスキーマは、構造化コンテンツのために最初から設計されています。WordPressの投稿/ページ/カスタム投稿タイプモデルは、後付けされたように感じられます。
- リアルタイムコラボレーション。 SanityにはGoogle Docsスタイルのリアルタイム編集があります。Contentfulにはライブコラボレーションがあります。WordPress?「この投稿は他の人によって編集中です」というロック画面が表示されるだけです。
- APIファーストアーキテクチャ。 WPGraphQLは素晴らしいですが、それでもPHPモノリスの上に座っているプラグインです。ContentfulのAPIとSanityのAPIは、初日からAPIファーストで設計されました。
- メディア処理。 WordPressのメディアライブラリは機能的ですが基本的です。自動クロップ、ホットスポット、CDN配信を備えたSanityの画像パイプラインは別次元です。ContentfulとStoryblokはCloudinaryとネイティブに統合されています。
- 開発者体験。 StrapiとPayloadは、スキーマ変更時のホットリロードを備えたローカル開発体験を提供します。WordPressは管理画面のリフレッシュとデータベースマイグレーションの実行が必要です。
| 機能 | WordPress Headless | Sanity | Contentful | Strapi | Payload |
|---|---|---|---|---|---|
| コンテンツモデリング | ACF + CPT(後付け) | GROQスキーマ(ネイティブ) | コンテンツタイプ(ネイティブ) | コレクションタイプ(ネイティブ) | TypeScript設定(ネイティブ) |
| API品質 | WPGraphQLプラグイン | GROQ + GraphQL(組み込み) | GraphQL + REST(組み込み) | REST + GraphQL(組み込み) | REST + GraphQL(組み込み) |
| リアルタイムコラボ | ロックベースのみ | Google Docsスタイル | ライブコラボレーション | なし | なし |
| メディア処理 | 基本的なメディアライブラリ | 画像パイプライン + CDN | Cloudinary統合 | アップロードプロバイダー | ローカル + S3 |
| 無料ティア | セルフホスト(無料) | 寛大な無料ティア | 無料(制限あり) | セルフホスト(無料) | セルフホスト(無料) |
| プラグインエコシステム | 60,000+ | 成長中(300+) | マーケットプレイス(200+) | マーケットプレイス(100+) | プラグイン(成長中) |
| 学習曲線 | 低(編集者が知っている) | 中 | 中 | 中 | 中〜高 |
結論: どちらを選ぶべきか?
WordPress Headlessを使用する場合: 長年のコンテンツを持つ既存のWordPressサイトがある場合、編集者が新しいCMSを学ぶことを拒否する場合、WooCommerceが必要な場合、または他に同等物がない特定のWordPressプラグインが必要な場合。
専用Headless CMSを選択する場合: ゼロから新しいプロジェクトを開始する場合、リアルタイムコラボレーションが必要な場合、コンテンツモデルが複雑で構造化されている場合、またはチームがプラグインの幅よりも開発者体験を重視する場合。
Techsyでは、従来のWordPressから移行するクライアントのためにHeadless WordPressフロントエンドを構築してきました。私たちの典型的なアプローチは、Vercel上のWPGraphQL + Next.js App Routerで、パフォーマンスのためのISRとコンテンツの新鮮さのためのオンデマンド再検証を採用しています。無料相談を受ける ->
<!-- CONDITIONAL: Add these links once target posts are live - [our full headless CMS comparison](/ja/blog/best-headless-cms-2026-compared) - [Sanity CMS guide](/ja/blog/sanity-cms-guide-10-languages) - [Contentful guide](/ja/blog/contentful-cms-guide-2026) - [Strapi deep dive](/ja/blog/strapi-5-guide-setup-api-plugins-deployment-2026) - [Payload CMS guide](/ja/blog/payload-cms-2026-why-figma-bought-it) - [Storyblok guide](/ja/blog/storyblok-cms-complete-developer-guide-2026) -->WordPress MCPとAbilities API: AIの未来
WordPress 6.9はAbilities APIを導入し、これはWordPress 7.0コア(2026年4月)にマージされています。これはWordPress機能のための標準化された、型付けされた、発見可能なインターフェースを作成します。AIツールが理解して使用できる機械可読形式でWordPressの機能を公開するものと考えると分かりやすいでしょう。
WordPress MCP Adapterは、このAbilities APIをModel Context Protocol(MCP)に橋渡しします。MCPは、AIシステムを外部ツールに接続するためのオープンスタンダードです。これは実際に何を意味するのでしょうか?Claude、Cursor、またはVS Code内のAIエージェントは、あなたのWordPressサイトができることを発見し、それらのアクションを直接実行できるようになりました。
具体的なシナリオを紹介します。ClaudeはWordPress投稿を作成し、ACFフィールドに構造化データを入力し、カテゴリを割り当て、アイキャッチ画像を設定し、Vercel再検証ウェブフックをトリガーすることができます。すべてが1回の会話の中で完了します。ブラウザも、管理パネルも、コピー&ペーストも必要ありません。
これは初期段階であり、MCPアダプターはまだ進化中です。しかし、それは重要なことを示唆しています。WordPressは、専用Headless CMSが革新している間、ただ座して待っているわけではありません。Abilities API + MCPの組み合わせにより、WordPressは利用可能な最もAIアクセスしやすいCMSの一つとなり、その巨大なプラグインエコシステムを、新しく小さなプラットフォームでは匹配できない方法で活用できるようになる可能性があります。完全な技術的詳細については、WordPress Developer Blogの公式発表をお読みください。
パフォーマンス: Headless WordPress vs 従来型WordPress
静的フロントエンドを備えたHeadless WordPressは、従来のPHPレンダリングWordPressと比較してパフォーマンスを劇的に改善します。従来のWordPressは、すべてのリクエストでPHPを実行して動的ページを提供するため、Time to First Byte(TTFB)が悪化します。2025年半ばのパフォーマンスデータによると、デスクトップWordPressクライアントの31%、モバイルの24%のみが良いTTFBスコアを示しています。Next.jsとISRを使用したHeadless化により、ページは事前レンダリングされCDNエッジノードから提供されるため、キャッシュされたページのTTFBは100ms未満に低下します。
Android Authorityに関するWP Engineのケーススタディでは、Headless WordPressに移行した後、Lighthouseパフォーマンススコアが6倍向上したことが示されました。Core Web Vitalsデータも同様の物語を語っています。モバイルで3つのCWV指標すべてに合格するWordPressサイトは45%のみであるのに対し、Shopifyは65%、Dudaは83%です。
| 指標 | 従来型WordPress | Headless WP + Next.js | 改善度 |
|---|---|---|---|
| TTFB(中央値) | 800-1,200ms | 50-100ms(CDNキャッシュ) | 8-16倍高速 |
| LCP | 2.5-4.0s | 1.0-1.8s | 40-60%高速 |
| CLS | 0.1-0.25 | <0.05 | レイアウトシフトほぼゼロ |
| Lighthouseパフォーマンス | 40-65 | 90-100 | 50-150%改善 |
| CWV合格率(モバイル) | 45% | 85%+(推定) | 合格サイトが約2倍 |
重要な注意点: Headless化は遅いWordPressバックエンドを修正しません。40のプラグインが入った安価な共有ホスティングを使用していてWordPress APIの応答に3秒かかる場合、ISR再生成も遅くなります。フロントエンドは、依存するAPIよりも速くなることはできません。質の高いマネージドホスティングに投資してください。Headless構成ではそれがより重要であり、 덜重要ではありません。WordPressパフォーマンスリードであるWeston Ruterのブログには、WordPressサーバーパフォーマンスを実際に向上させるものに関する優れたデータがあります。
FAQ
Headless WordPressとは何ですか?
Headless WordPressは、WordPressがコンテンツ管理バックエンドとしてのみ機能し、PHPフロントエンドテーマが完全に無効化されるアーキテクチャです。コンテンツは、Next.js、Nuxt、Astroなどのフレームワークで構築された別のフロントエンドアプリケーションに、REST APIまたはWPGraphQLを介して配信されます。WordPress管理ダッシュボードは、コンテンツ編集者のために完全に機能したままです。
WordPressはHeadless CMSとして優れていますか?
既存のWordPressサイトがある場合、インターフェースを知っているコンテンツ編集者がいる場合、またはプラグインエコシステム(特にWooCommerce)が必要な場合、WordPressはHeadless CMSとしてうまく機能します。しかし、ゼロから始める場合、WordPressのコンテンツモデリングとAPIは後付けされたものであり、APIファーストで構築されていないため、SanityやContentfulなどの専用Headless CMSほど理想的ではありません。
Headless WordPressの欠点は何ですか?
主な欠点は以下の通りです。複雑さの増大(1つではなく2つのホスティング環境)、ビジュアル編集とページビルダー機能の喪失、フロントエンドプラグインの動作停止(Yoastのメタレンダリング、コンタクトフォーム、Cookieバナー)、リアルタイムコンテンツコラボレーションの欠如、そしてGraphQL APIがコア機能ではなくプラグイン依存であることです。WordPressホスティングとフロントエンドホスティングの両方に支払う必要があるため、予算も増加します。
Next.jsをWordPressに接続するにはどうすればよいですか?
WordPressサイトにWPGraphQLをインストールし、App Routerを使用してNext.jsプロジェクトを作成します。WordPress GraphQLエンドポイントを環境変数として設定し、単純なfetchベースのGraphQLユーティリティ関数を作成し、それをServer Componentsで使用して投稿、ページ、カスタムコンテンツタイプをクエリします。Server Componentsはサーバー上で実行されるため、Apolloやurqlは必要なく、単純なfetchで動作します。
WPGraphQL vs REST API、どちらが良いですか?
WPGraphQLは、リクエストしたフィールドのみを返し(ペイロードサイズを60-80%削減)、単一リクエストでネストされたクエリをサポートし、スキーマ探索のためのGraphiQL IDEを提供するため、本番用フロントエンドに適しています。REST APIは、迅速なプロトタイピング、GraphQLに慣れていないチーム、または追加のツールなしでネイティブHTTPキャッシングが重要なシナリオに適しています。
Headless WordPressのコストはいくらですか?
最小限のHeadless WordPressセットアップのコストは月額約$14です。WordPressホスティング用のCloudwaysと、フロントエンド用のVercelの無料Hobbyティアを組み合わせた場合です。WP EngineとVercel Proを使用した本番環境セットアップでは、月額$40-70です。ACF ProやWPMLなどのプレミアムプラグインには、月額$0-50を追加してください。専用Headless CMSはしばしば寛大な無料ティアを持っているため、コスト alone がWordPress Headlessを選ぶ理由にはなりません。
Headless WordPressでWooCommerceを使用できますか?
はい。WPGraphQLにはWooCommerce拡張機能(WPGraphQL WooCommerceまたは「WooGraphQL」)があり、製品、注文、カート、チェックアウト機能をGraphQL経由で公開します。これにより、フルeコマース機能を備えたカスタムReactストアフロントを構築できます。チェックアウトフローは従来のWooCommerceテーマと比較して追加の作業が必要ですが、高トラフィックストアにとってパフォーマンスとUXの利益は顕著です。
Headless WordPressの設定には開発者が必要ですか?
はい、Headless WordPressのセットアップにはフロントエンド開発スキル、具体的にはReact(またはVue/Svelte)とAPIに関する知識が必要です。フロントエンド全体をゼロから構築するか、スターターテンプレートをカスタマイズする必要があります。これはノーコードソリューションではありません。コンテンツ編集者は引き続きWordPress管理画面を通常通り使用できますが、初期セットアップと継続的なフロントエンドメンテナンスには開発者の関与が必要です。
Headless WordPressに必須のプラグインは何ですか?
必須プラグインは、WPGraphQL(GraphQL API)、Advanced Custom FieldsまたはACF(構造化コンテンツモデリング)、およびWPGraphQL for ACF(カスタムフィールドをGraphQL経由で公開)です。強く推奨されるもの: 管理画面を通じて投稿タイプを登録するためのCustom Post Type UI、およびコンテンツ公開時にフロントエンドリビルドをトリガーするためのWP Webhooksなどのウェブフックプラグイン。Yoast SEOのメタレンダリングやフォームプラグインなど、フロントエンド依存のプラグインは避けてください。
Headless WordPressはSEOに良いですか?
Next.jsまたはNuxtで正しく実装された場合、Headless WordPressはSEOに優れる可能性があります。サーバーサイドレンダリング、ページ読み込みの高速化(Core Web Vitalsの改善)、メタタグ、構造化データ、URL構造の完全な制御が得られるためです。リスクは、Yoastのメタタグレンダリングなどの自動SEOプラグイン機能を失うことです。メタタグ、サイトマップ、構造化データはフロントエンドコードで手動で処理する必要があります。