\WP_REST_Server::EDITABLE, 'callback' => array( $this, 'save' ), 'permission_callback' => static function () { return current_user_can( Capabilities::VIEW_REPORTS ); }, 'args' => array( 'theme' => array( 'type' => 'string', 'enum' => Shell::THEMES, ), 'sidebar' => array( 'type' => 'string', 'enum' => Shell::SIDEBARS, ), ), ) ); } /** * Stores whichever preferences were sent. * * @param \WP_REST_Request $request Request. * @return \WP_REST_Response */ public function save( \WP_REST_Request $request ) { $user_id = get_current_user_id(); if ( null !== $request['theme'] ) { update_user_meta( $user_id, Shell::THEME_META, (string) $request['theme'] ); } if ( null !== $request['sidebar'] ) { update_user_meta( $user_id, Shell::SIDEBAR_META, (string) $request['sidebar'] ); } return rest_ensure_response( array( 'theme' => Shell::theme( $user_id ), 'sidebar' => Shell::collapsed( $user_id ) ? 'collapsed' : 'expanded', ) ); } }