WP REST APIをrest_api_initフックで取得して表示する方法
1516 回閲覧されました
みなさんこんにちは、WEB制作のエンジニアのjonioです。
業務でフックを使ってなかったのですがWordPressのヘッドレスサイトを作る際にアクションフック(rest_api_initフック)を使わないといけなくなり使い方を知ったのですが忘れない為の記録の記事になります。
それでは記録の開始です。
アクションフックとフィルターフックの違い
違いは下記になります。
- アクションフック : WordPressの特定のタイミングに自分で作った独自の関数を使って何らかの処理をする
- フィルターフック : WordPressの処理の途中で出力する内容をカスタマイズする
今回はWP REST APIのカテゴリーを取得するのを例にして説明します。
WP REST APIを使った時に記事のカテゴリー名はJSONに含まれないみたいです
WP REST APIを使うタイミングでカテゴリーを取得するのですがアクションフックを使います。
rest_api_initフック
まずはフックで割り込むタイミングを指定しますがfunctions.phpのコードに↓を加えます。
割り込むタイミングは「rest_api_init」です。
「自分で作った独自の関数名」は好きな名前でいいですが「api_function」とします。
ここまででコードは↓になります。
api_function
「api_function」は関数が引数として使われていますがこのような関数をコールバック関数と言います。
次は「api_function」の中身を書きます。
コードを↓にします。
register_rest_field
5行目で「register_rest_field」が使われていますがこれはWP REST APIで表示するJSONデータの内容を変える時に使います。
JSONデータの内容は例えばNuxt.jsでWordPressの記事の情報をaxiosで吸い出した場合は↓みたいにデベロッパーツールから見ることができます。
5行目の投稿タイプ名はWordPressの投稿タイプ名で投稿がpostで固定ページがpagedです。(カスタム投稿タイプも使えるはずです)
今は投稿した記事を表示するのでpostにします。
6行目の識別子名ですが↑の図の紫色の文字の部分になります。
識別子名を「category」にします。
8行目の「APIに追加する値を決める関数名」ですが名称を自由に決めていいですがapiを追加するので「add_api」とします。
9行目・10行目ですがリファレンスを見たら情報を追加しない場合は「null」でいいと分かりました。
今は特に情報の追加をしないのでこのままにします。
ここまでをコードにすると↓になります。
add_api関数
最後に6行目の「add_api関数」の中身を決めます。
コードをとりあえず↓にします。
次にコードを↓にします。
13行目の「get_the_category」ですがカテゴリーの取得をしています。
14行目の「$post[‘id‘]」で投稿した記事のIDを表していて「get_the_category($post[‘id‘])」で投稿した記事のIDに対応するカテゴリーを表します。
これでJSONデータは↓になり識別子の「category」が表示されるのが確認できました。