REST WP API(バージョン2)に基づいて新しいRESTApiエンドポイントを定義しようとしていますが、validate_callback
で使用できる引数について質問があります。 sanitize_callback
。これらのコールバックでRequest
オブジェクトが利用可能になっていますか?
例えば:
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
'args' => array(
'id' => array(
'validate_callback' => 'my_validation'
),
),
) );
} );
function my_validation (WP_REST_Request $request) {
return is_numeric( $request['id'] ); // Is this acceptable???
}
WP-APIソースをクイック検索したところ、validate_callback
が使用されている場所が明らかになりました。
wp-api/lib/infrastructure/class-wp-rest-request.php
$valid_check = call_user_func( $arg['validate_callback'], $param, $this, $key );
この場合、$this
はWP_Rest_Request
のインスタンスです。さて、sanitize_callback
の場合:
$this->params[ $type ][ $key ] = call_user_func( $attributes['args'][ $key ]['sanitize_callback'], $value, $this, $key );
同じファイル、探している$this
があります。そのため、2つめの引数として両方ともWP_Rest_Request
のインスタンスを取得する必要があります。