WordPressは標準でREST APIを備えており、投稿やページ、カスタム投稿タイプなどの情報をJSON形式で外部に配信できます。これにより、SPA(シングルページアプリケーション)やモバイルアプリ、外部のWebサービスと簡単に連携可能です。
この記事では、WordPressのREST APIで投稿データを取得し、外部アプリケーションに配信する基本的な方法とカスタマイズ方法を解説します。
標準のREST APIエンドポイントで投稿を取得する
WordPressはデフォルトで以下のようなエンドポイントを提供しています。
https://example.com/wp-json/wp/v2/posts
このURLにアクセスすると、最新の投稿一覧(デフォルト10件)がJSON形式で返されます。
特定の条件で投稿を絞り込む方法
REST APIではクエリパラメータを追加することで、投稿データをフィルタリングできます。
- 特定のカテゴリの記事:
?categories=3
(カテゴリIDが3の記事) - 投稿数を増やす:
?per_page=20
- 特定のカスタム投稿タイプ:
/wp-json/wp/v2/<post_type>
例:イベント投稿タイプの一覧を取得する場合
https://example.com/wp-json/wp/v2/event?per_page=10
個別記事の詳細データを取得する
個別の投稿を取得したい場合は、IDを指定します。
https://example.com/wp-json/wp/v2/posts/123
このリクエストでは、IDが123の投稿データがJSONで返されます。
カスタムフィールド(ACF)も取得したい場合
ACF(Advanced Custom Fields)を使用している場合、標準のREST APIではフィールドは取得できません。
ACF Proを使用していれば、ACF REST API機能を有効化することで取得可能です。
https://example.com/wp-json/wp/v2/posts/123?acf_format=standard
または、テーマのfunctions.php
に以下のようなコードを追加することで、独自にフィールドを追加することも可能です。
function add_custom_fields_to_api($response, $post, $request) {
$custom_field = get_post_meta($post->ID, 'custom_key', true);
$response->data['custom_key'] = $custom_field;
return $response;
}
add_filter('rest_prepare_post', 'add_custom_fields_to_api', 10, 3);
認証が必要なAPIへのアクセス方法
非公開投稿や管理系APIにアクセスする場合は、認証が必要です。主な方法は以下の通りです。
- Application Passwords(WordPress 5.6以降)
- Cookie認証(同一ドメイン用)
- JWT(JSON Web Token)認証(プラグインで追加可能)
例えば、Application Passwordsを使ったベーシック認証形式:
Authorization: Basic base64_encode("username:application-password")
カスタムエンドポイントを作成して配信データを制御する
必要に応じて独自のREST APIエンドポイントを作成することもできます。
function register_custom_api_route() {
register_rest_route('myapi/v1', '/latest/', array(
'methods' => 'GET',
'callback' => 'my_custom_api_callback',
));
}
function my_custom_api_callback($request) {
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
);
$posts = get_posts($args);
$data = array();
foreach ($posts as $post) {
$data[] = array(
'title' => get_the_title($post),
'link' => get_permalink($post),
);
}
return rest_ensure_response($data);
}
add_action('rest_api_init', 'register_custom_api_route');
上記を追加することで、以下のようなエンドポイントから投稿タイトルとリンクのJSONを取得できます。
https://example.com/wp-json/myapi/v1/latest
まとめ
WordPress REST APIを活用すれば、投稿データを外部アプリケーションに柔軟に配信できます。標準機能でも基本的な取得は可能ですが、必要に応じてカスタムフィールドの追加やカスタムエンドポイントの作成で、さらに高度な情報提供が可能になります。
外部連携やフロントエンド分離(ヘッドレスCMS)を検討している方は、ぜひREST APIの活用を取り入れてみてください。