\WP_REST_Server::READABLE, 'callback' => array(__CLASS__, 'get_settings'), 'permission_callback' => function() { return current_user_can('manage_options'); } ), array( 'methods' => \WP_REST_Server::CREATABLE, // POST requests 'callback' => array(__CLASS__, 'create_settings'), 'permission_callback' => function() { return current_user_can('manage_options'); } ), array( 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array(__CLASS__, 'update_settings'), 'permission_callback' => function() { return current_user_can('manage_options'); } ), array( 'methods' => \WP_REST_Server::DELETABLE, 'callback' => array(__CLASS__, 'reset_settings'), 'permission_callback' => function() { return current_user_can('manage_options'); } ) )); } /** * Get settings. * * @return array */ public static function get_settings() { // $settings = advanced_login_page_customizer_settings(); $settings = get_option('advanced_login_page_customizer_settings', array()); // Provide a default empty array if no settings found return rest_ensure_response($settings); } public static function create_settings(\WP_REST_Request $request) { $params = $request->get_params(); // Validate and sanitize data before saving $settings = advanced_login_page_customizer_recursive_parse_args($params, array()); update_option('advanced_login_page_customizer_settings', $settings, false); return rest_ensure_response($settings); } /** * Update settings. * * @param \WP_REST_Request $data * @return array */ public static function update_settings(\WP_REST_Request $data) { $params = $data->get_params(); // $settings = advanced_login_page_customizer_login_settings(); $settings = advanced_login_page_customizer_recursive_parse_args($params, array()); update_option('advanced_login_page_customizer_settings', $settings, false); return rest_ensure_response($settings); } /** * Reset settings. * * @return array */ public static function reset_settings() { update_option('advanced_login_page_customizer_settings', array(), false); return rest_ensure_response(array('status' => true)); } } SETTINGS_API::init();