endpoint, [ [ 'methods' => 'GET', 'callback' => [$this, 'handleRequest'], 'permission_callback' => function () { return UserPermissions::events()->canView(); }, ], 'args' => [ 'page' => [ 'validate_callback' => function ($param) { return filter_var($param, FILTER_VALIDATE_INT); }, 'default' => 1, ], 'per_page' => [ 'validate_callback' => function ($param) { return filter_var($param, FILTER_VALIDATE_INT); }, 'default' => 10, ], ], ] ); } /** * @since 3.6.0 * * @return WP_REST_Response * */ public function handleRequest(WP_REST_Request $request) { $events = give('events') ->prepareQuery() ->paginate( $request->get_param('page'), $request->get_param('per_page') )->getAll(); return new WP_REST_Response( array_map( function (Model $model) { return $model->toArray(); }, $events ) ); } }