current_user_can( 'manage_options' ); register_rest_route( self::API_NAMESPACE, self::FETCH, [ 'methods' => 'GET', 'callback' => [ $this, 'get_settings' ], 'permission_callback' => $admin_only, ] ); register_rest_route( self::API_NAMESPACE, self::UPDATE, [ 'methods' => 'POST', 'callback' => [ $this, 'update_settings' ], 'permission_callback' => $admin_only, 'args' => [ 'metaBoxes' => [ 'type' => 'array' ], 'advanced' => [ 'type' => 'object' ], ], ] ); } public function get_settings() { return rest_ensure_response( [ 'success' => true, 'settings' => Settings::get_instance()->get() ] ); } public function update_settings( \WP_REST_Request $request ) { $settings = Settings::get_instance(); $updated = $settings->update( (array) $request->get_json_params() ); return rest_ensure_response( [ 'success' => $updated, 'message' => $updated ? __( 'Settings saved.', 'webhook-buttons' ) : __( 'Settings could not be saved.', 'webhook-buttons' ), 'settings' => $settings->get( true ), ] ); } }