$args Endpoint args, or a list of endpoint arg sets. * @return void */ protected function route( $route, array $args ) { $permission = array( Auth::class, 'can_read' ); if ( isset( $args[0] ) && is_array( $args[0] ) ) { foreach ( $args as $i => $endpoint ) { if ( is_array( $endpoint ) && ! isset( $endpoint['permission_callback'] ) ) { $args[ $i ]['permission_callback'] = $permission; } } } elseif ( ! isset( $args['permission_callback'] ) ) { $args['permission_callback'] = $permission; } register_rest_route( self::NAMESPACE_V1, $route, $args ); } /** * Wraps data in a response. * * @param mixed $data Data. * @param int $status HTTP status. * @return \WP_REST_Response */ protected function respond( $data, $status = 200 ) { return new \WP_REST_Response( $data, $status ); } /** * Builds an error. * * @param string $code Error code. * @param string $message Message. * @param int $status HTTP status. * @param array $extra Extra data. * @return \WP_Error */ protected function error( $code, $message, $status = 400, array $extra = array() ) { return new \WP_Error( $code, $message, array_merge( array( 'status' => $status ), $extra ) ); } /** * Schema fragment for a positive integer parameter. * * @param bool $required Whether required. * @param int $default Default value. * @return array */ public function int_param( $required = false, $default = 0 ) { $param = array( 'type' => 'integer', 'minimum' => 1, 'sanitize_callback' => 'absint', ); if ( $required ) { $param['required'] = true; } else { $param['default'] = $default; } return $param; } }