WordPress REST API (Version 2) の posts エンドポイントにカスタムフィールドの値を追加する

WordPress REST API (Version 2) で出力される JSON でカスタムフィールドで登録した値を取得したいけど Post Meta エンドポイント (http://example.com/wp-json/wp/v2/posts/<parent_id>/meta) はセキュリティの関係上、認証[*1]されたユーザにしか出力されないので Posts エンドポイント (http://example.com/wp-json/wp/v2/posts/<id>) でカスタムフィールドの値を出力するメモ。
[*1] Authentication | WP REST API v2 Documentation

functions.php に以下を追加。
$response に出力される JSON のデータ(?)が入っているので rest_prepare_post をフックして値を書き換え。

<br />
function my_rest_prepare_post( $response, $post, $request ) {</p>
<p>$response-&amp;gt;data['post_meta'] = array(<br />
'hoge' =&amp;gt; get_post_meta( $post-&amp;gt;ID, 'key_hoge', true ),<br />
'fuga' =&amp;gt; get_post_meta( $post-&amp;gt;ID, 'key_fuga', true ),<br />
);</p>
<p>return $response;<br />
}<br />
add_filter( 'rest_prepare_post', 'my_rest_prepare_post', 10, 3 );<br />

フィルターフックはプラグインディレクトリ内、 rest-api/lib/endpoints/class-wp-rest-posts-controller.php で定義されており post_type 毎に設定できるので pagesエンドポイント (http://example.com/wp-json/wp/v2/pages/<id>) に追加したいのであれば rest_prepare_page と。

<br />
/**<br />
* Filter the post data for a response.<br />
*<br />
* The dynamic portion of the hook name, $this-&amp;gt;post_type, refers to post_type of the post being<br />
* prepared for the response.<br />
*<br />
* @param WP_REST_Response   $response   The response object.<br />
* @param WP_Post            $post       Post object.<br />
* @param WP_REST_Request    $request    Request object.<br />
*/<br />
return apply_filters( 'rest_prepare_' . $this-&amp;gt;post_type, $response, $post, $request );<br />

カスタマイズ方法を探していて WordPress › フォーラム » カスタムフィールドの内容をJSON REST APIで表示する を参考にしたのですがこの時は WordPress REST API (Version 1) で、 Version 2 になってフィルターフック名が変わっていたので躓いた…

参考サイト