service = $service; } /** * Register REST routes. */ public function register() { // Register fetch config. $route_args = [ 'methods' => 'GET', 'callback' => [ $this->service, 'get_configuration' ], 'permission_callback' => [ $this, 'can_retrieve_data' ], ]; register_rest_route( self::REST_NAMESPACE, self::ENDPOINT_RETRIEVE, $route_args ); // Register save changes. $route_args = [ 'methods' => 'POST', 'callback' => [ $this->service, 'set_configuration' ], 'permission_callback' => [ $this, 'can_save_data' ], ]; register_rest_route( self::REST_NAMESPACE, self::ENDPOINT_STORE, $route_args ); } /** * Permission callback implementation. * * @return bool */ public function can_retrieve_data() { return current_user_can( self::CAPABILITY_RETRIEVE ); } /** * Permission callback implementation. * * @return bool */ public function can_save_data() { return current_user_can( self::CAPABILITY_STORE ); } }