REST API で投稿一覧(/wp-json/wp/v2/posts)を取得した場合、タグ情報は ID 配列で取得することになります。このブログのように、タグ情報を表示したい場合は、ID だと不都合で、タグエンティティを丸っと欲しいです。
そうした場合、functions.php に加工をすることでタグのエンティティ情報を取得できます。
function wp_rest_prepare_post($data, $item, $request)
{
$params = $request->get_params();
if (isset($params['nextjs'])) {
$data->data['tags'] = get_the_tags();
}
return $data;
}
add_filter('rest_prepare_post', 'wp_rest_prepare_post', 10, 3);
GET パラメータに nextjs があるかチェックしています。このフラグが無いと、全レスポンスの tags が id ではなくてエンティティを返してしまいます。REST API は管理画面のブロックエディタでも利用されているのでバグが発生してしまいます。Next.js からの利用ですよ、というマークをつける必要があります。Next.js から REST API を実行する際に、かならず nextjs パラメータを付けるようにするだけで OK です。
さらに、前後のページ情報もレスポンスに含むことができます。
function wp_rest_prepare_post($data, $item, $request)
{
$params = $request->get_params();
if (isset($params['nextjs'])) {
$data->data['tags'] = get_the_tags();
}
if (isset($params['slug'])) {
$data->data['prev'] = get_previous_post();
$data->data['next'] = get_next_post();
}
return $data;
}
add_filter('rest_prepare_post', 'wp_rest_prepare_post', 10, 3);
GET パラメータに slug が存在する場合にのみ、前後ページの情報を含んでいます。GET パラメータに slug が存在する、ということは詳細ページのデータ取得になります。