web-dev-qa-db-ja.com

Validate_callbackのリクエストオブジェクト

REST WP AP​​I(バージョン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???
}
2
Loc Pham

WP-APIソースをクイック検索したところ、validate_callbackが使用されている場所が明らかになりました。

wp-api/lib/infrastructure/class-wp-rest-request.php

$valid_check = call_user_func( $arg['validate_callback'], $param, $this, $key );

この場合、$thisWP_Rest_Requestのインスタンスです。さて、sanitize_callbackの場合:

$this->params[ $type ][ $key ] = call_user_func( $attributes['args'][ $key ]['sanitize_callback'], $value, $this, $key );

同じファイル、探している$thisがあります。そのため、2つめの引数として両方ともWP_Rest_Requestのインスタンスを取得する必要があります。

2
phatskat