namespace, $this->rest_base, [ [ 'methods' => \WP_REST_Server::READABLE, 'callback' => [ $this, 'get_settings' ], 'permission_callback' => function () { return current_user_can( 'manage_timetics' ); }, ], [ 'methods' => \WP_REST_Server::EDITABLE, 'callback' => [ $this, 'update_settings' ], 'permission_callback' => function () { return current_user_can( 'manage_timetics' ); }, ], ] ); } /** * Get settings * * @return JSON */ public function get_settings() { $settings = timetics_get_settings(); $data = [ 'status_code' => 200, 'success' => 1, 'message' => __( 'Get all settings', 'timetics' ), 'data' => $settings, ]; return rest_ensure_response( $settings ); } /** * Update settings * * @param WP_Rest_Request $request * * @return JSON */ public function update_settings( $request ) { $options = json_decode( $request->get_body(), true ); if ( $options ) { foreach ( $options as $key => $value ) { timetics_update_option( $key, $value ); } } $data = [ 'status_code' => 200, 'success' => 1, 'message' => __( 'Settings successfully updated', 'timetics' ), 'data' => timetics_get_settings(), ]; return rest_ensure_response( $data ); } }