説明
WP_REST_Request は、REST APIのリクエスト(パラメーター、ヘッダーなど)を表すクラスです。エンドポイントのコールバックに渡されます。
基本構文
WP_REST_Request
引数
get_param( $key ):パラメーターを取得get_params():全パラメーターを取得get_json_params():JSONボディを取得get_header( $key ):ヘッダーを取得get_method():HTTPメソッドを取得
戻り値
コールバックの引数として受け取ります。
使い方(サンプル)
register_rest_route( 'my/v1', '/item', array(
'methods' => 'GET',
'callback' => function( WP_REST_Request $req ) {
return array( 'id' => absint( $req->get_param( 'id' ) ) );
},
'permission_callback' => '__return_true',
) );
注意点
- 受け取った値は必ずサニタイズします。
argsにsanitize_callback/validate_callbackを指定すると、自動で検証できます。
実務での使いどころ
- REST APIの、コールバックで、リクエストのパラメータ(URL、クエリ、本文)を、受け取るとき。
- JSONの本文(
get_json_params())を、取得するとき。
よくあるミスと対処
$_POST・$_GETを、直接使っている。$request->get_param()を使う。- パラメータを、検証・サニタイズしていない。
register_rest_route()のargsで、validate_callback・sanitize_callbackを指定する。 - 存在しないパラメータは
null。確認せずに使う。
NG例
function my_callback( $request ) {
$id = $_GET['id']; // 直接使っている
}
OK例
function my_callback( WP_REST_Request $request ) {
$id = absint( $request->get_param( 'id' ) );
$body = $request->get_json_params();
return rest_ensure_response( array( 'id' => $id ) );
}
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| パラメータを、取得する | $request->get_param() |
| JSONの本文を、取得する | $request->get_json_params() |
| 応答を、作る | rest_ensure_response() |
関連項目
register_rest_route()、WP_REST_Response、rest_ensure_response()

コメント