WordPressは通常、フロントエンドとバックエンドが一体となったCMSですが、近年では「ヘッドレスCMS」としての活用も注目されています。ヘッドレス化とは、WordPressの管理機能(投稿・管理画面など)はそのままに、表示部分をReactやVue.jsなどの外部アプリで構築する方法です。
この記事では、WordPressをヘッドレスCMSとして活用する第一歩として、REST APIを使った外部アプリとの連携方法をわかりやすく解説します。
WordPress REST APIとは?
WordPress REST APIは、WordPressのデータ(投稿、固定ページ、ユーザー、メディアなど)をJSON形式で取得・操作できる仕組みです。WordPress 4.7以降ではデフォルトで有効になっており、特別なプラグインを使わなくても簡単に利用できます。
以下のようなURLでREST APIにアクセスできます:
https://example.com/wp-json/wp/v2/posts
このURLにアクセスすることで、サイト内の投稿一覧をJSON形式で取得できます。
REST APIで取得できる情報
REST APIでは、さまざまなエンドポイントが用意されています。主なものを紹介します。
/wp/v2/posts
:投稿/wp/v2/pages
:固定ページ/wp/v2/categories
:カテゴリ情報/wp/v2/tags
:タグ/wp/v2/users
:ユーザー情報(認証が必要)
クエリパラメータを組み合わせることで、ページネーションや検索なども可能です。
https://example.com/wp-json/wp/v2/posts?per_page=5&search=キーワード
外部アプリから投稿を取得して表示する
REST APIを使えば、JavaScriptのfetchやaxiosを使って外部アプリから投稿データを取得し、画面に表示することができます。以下は簡単な例です。
fetch('https://example.com/wp-json/wp/v2/posts')
.then(response => response.json())
.then(data => {
data.forEach(post => {
console.log(post.title.rendered);
});
});
このように、WordPressの投稿データを取得して任意のUIで表示することが可能になります。
認証が必要な操作について
投稿の新規作成や編集・削除など、読み取り以外の操作を行う場合には認証が必要です。以下のような認証方法が用いられます。
- アプリケーションパスワード(WordPress 5.6以降対応)
- JWT認証(プラグイン導入が必要)
- OAuth認証
たとえば、アプリケーションパスワードを使ったBasic認証で投稿を作成するには、HTTPヘッダーに認証情報を含めてリクエストを送信します。
カスタムエンドポイントの追加
REST APIは拡張も可能です。たとえば、オリジナルのデータを返すエンドポイントを作成するには、register_rest_route()
関数を使います。
add_action('rest_api_init', function () {
register_rest_route('myapi/v1', '/hello/', array(
'methods' => 'GET',
'callback' => 'my_custom_endpoint',
));
});
function my_custom_endpoint() {
return array('message' => 'こんにちは、REST API!');
}
このコードをテーマのfunctions.phpに追加すると、/wp-json/myapi/v1/hello
にアクセスしたときにカスタムメッセージを返すAPIが完成します。
まとめ
WordPressのREST APIは、ヘッドレスCMSへの第一歩として非常に強力な武器です。読み取りだけなら誰でも簡単に試せるため、まずは外部アプリから投稿データを取得するところから始めてみましょう。
今後は、認証機能やカスタムエンドポイントを使ったデータ操作、フロントエンドフレームワークとの連携などを通じて、より高度なヘッドレスCMSを構築することが可能になります。