WordPressをヘッドレス化してみた
WordPressをヘッドレス化してみた
目次
- はじめに
- 構成の比較(既存構成 vs ヘッドレス構成)
- バックエンド環境の構築(WordPressのコピーと分離)
- WordPressのヘッドレス化設定
- フロントエンドの実装(Next.js + Tailwind CSS)
- Vercelへのデプロイ
- 本番公開とドメインの移管設定
- SEO対策と今後の課題
- まとめ
1. はじめに
作成サイトしたサイト(※虫注意):https://www.chatachata.jp
今回ヘッドレスCMSという技術を知り、実際に使ってみたいと考えたのがきっかけです。
そこで、過去にWordPressで構築したサイトを、この機会にヘッドレス化してみることにしました。
最近学習していたNext.jsとTailwind CSSをフロントエンドに採用し、デプロイがスムーズに行えるVercelをプラットフォームとして選定しています。
2. 構成の比較(既存構成 vs ヘッドレス構成)
| 項目 | 既存サイト (Current) | 新サイト (New) |
|---|---|---|
| フロントエンド | WordPress (Xserver) | Vercel |
| バックエンド | WordPress (Xserver) | WordPress (Xserver) |
| 構成スタイル | モノリス (一体型) | ヘッドレス (疎結合) |
| 主なインフラ | エックスサーバー | Vercel + エックスサーバー |
3. バックエンド環境の構築(WordPressのコピーと分離)
今回は既存のドメインを継続して運用したかったため、元のWordPressデータを、エックスサーバーで所有していた別のドメインへコピーしました。
そのコピー先の環境をバックエンド(ヘッドレスCMS)として利用することにしました。
移行方法はXserverの場合、サーバーパネルから簡単にできました。
WordPress - WordPress簡単移行を開く
以下を設定し、移行するボタンを押すと自動で移行してくれる。
- 移行元URLにWordPress移行元のドメイン
- 移行先URLにWordPress移行先のドメイン(今回はXserverに最初から割り当てられているドメインにしました)

4. WordPressのヘッドレス化設定
ブログ記事のみをWordPressで管理して、固定ページは新規作成することにしました。
以下の手順でWordPressの設定をしました。
- 不要な固定ページ、プラグインを削除
- 検索エンジンがサイトをインデックスしないようにする
- REST APIを有効化
- 海外からのAPIへのアクセス許可
不要な固定ページ、プラグインを削除
今回固定ページは新たに作ることにしたため、すべて削除しました。
プラグインもほぼすべて削除しました。
検索エンジンがサイトをインデックスしないようにする
これは、Googleなどの検索エンジンにヘッドレスWordPressを表示しないようにするための設定です。
サイト自体にアクセスしたら、404を返すなどの対応もありましたが簡単な以下の方法を取りました。
WordPressのダッシュボードに行き、設定 - 表示設定を開きます。
開くと、検索エンジンでの表示とあるのでそこにチェックマークを入れることでインデックスしないように設定できます。

REST APIを有効化
ここは特に何もせずに、ローカル環境からは使用することができていました。
海外からのAPIへのアクセス許可
今回デプロイ環境をVercelとしました。
最初ローカル環境からREST APIは使えていたのですがデプロイ後にREST APIがエラーとなり情報が取得できない問題が発生しました。
そこで、調べたところXserverでは国外からのREST APIアクセスを制限する設定があることを知りました。
以下サーバーパネルのWordPress - WordPressセキュリティ設定に設定があり、ここをOFFすることでデプロイ先からもREST APIを使用できました。

5. フロントエンドの実装(Next.js + Tailwind CSS)
フロントエンドの実装では、まずREST APIを使用してデータの取得ができるか確認してそこから実装をしました。
細かい実装は省略。
6. Vercelへのデプロイ
Vercelへのデプロイは初めてでしたが、簡単にすることができました。
デプロイ方法も省略。
Vercelは自分のGitHubと紐づけることでコードをPushするとデプロイまで自動で行ってくれます。
7. 本番公開とドメインの移管設定
既存サイト(Xserver)のドメインを新サイト(Vercel)に移行しました。
ドメインはXserverでもともと使用していたものを使用したかったので、ドメインの向き先をVercelに変えるようにDNSレコードを変更しました。
Xserverではサーバーパネルからドメイン - DNSレコード設定にあるAレコードとCNAMEにVercelで提示されたレコードを設定することで向き先をVercelに変えます。

8. SEO対策
SEO対策は以下の手順で対策を行いました。
- タグの見直し
- メタデータの見直し
- sitemapとrobots.txtの追加
- Google Search Consoleへドメインを登録
sitemapとrobots.txtの追加
sitemapの役割
サイト内にどのようなページが存在するかをリスト化した、検索エンジン用のインデックス(目次)です。
app/sitemap.ts
import { MetadataRoute } from 'next';
export default function sitemap(): MetadataRoute.Sitemap {
const baseUrl = 'https://shoat-portfolio.com';
return [
{
url: baseUrl,
lastModified: new Date(),
},
{
url: `${baseUrl}/projects`,
lastModified: new Date(),
},
{
url: `${baseUrl}/blog`,
lastModified: new Date(),
},
];
}
robots.txt の役割
robots.txt は、クローラーがサイトに訪れた際、最初に確認するファイルです。「どのページを見ていいか、どこを見てはいけないか」という許可・禁止のルールを伝えます。
以下にファイルは配置しました。
public/robots.txt
User-agent: *
Allow: /
Sitemap: https://shoat-portfolio.com/sitemap.xml
Google Search Consoleへドメインを登録
- ドメイン登録
- sitemapの登録
- robotsの登録
Google Search Console:https://search.google.com/
ドメイン登録
Xserverレンタルサーバーパネルからドメイン - DNSレコード設定からTXTに提示されたレコードを登録する。

以降、ドメイン登録完了後
sitemapの登録
Google Search Consoleのインデックス作成 - サイトマップから登録
robotsの登録
Google Search Consoleの設定 - robots.txtから登録
9. まとめ
今回、WordPressをヘッドレス化してみました。
Vercelを使用したデプロイやSEO対策など、Webサイト公開に関する勉強にもなりました。
今後、WordPress以外のCMSも使用してみたいです。