/** * Updates plugin settings if there are new settings to add. * * @since 0.2.0 */ function members_update() { /* Update the database version setting. */ update_option('members_db_version', MEMBERS_DB_VERSION); /* Get the settings from the database. */ $settings = get_option('members_settings'); /* Get the default plugin settings. */ $default_settings = members_get_default_settings(); /* Loop through each of the default plugin settings. */ foreach ($default_settings as $setting_key => $setting_value) { /* If the setting didn't previously exist, add the default value to the $settings array. */ if (!isset($settings[$setting_key])) { $settings[$setting_key] = $setting_value; } } /* Update the plugin settings. */ update_option('members_settings', $settings); }
/** * Initializes and sets up the main plugin settings page. * * @since 0.2.0 */ function members_settings_page_setup() { global $members; /* If no settings are available, add the default settings to the database. */ if (false === get_option('members_settings')) { add_option('members_settings', members_get_default_settings(), '', 'yes'); } /* Register the plugin settings. */ add_action('admin_init', 'members_register_settings'); /* Add Members settings page. */ $members->settings_page = add_submenu_page('options-general.php', esc_attr__('Members Settings', 'members'), esc_attr__('Members', 'members'), apply_filters('members_settings_capability', 'manage_options'), 'members-settings', 'members_settings_page'); /* Add media for the settings page. */ add_action('admin_enqueue_scripts', 'members_admin_enqueue_style'); add_action('admin_enqueue_scripts', 'members_settings_page_media'); add_action("admin_head-{$members->settings_page}", 'members_settings_page_scripts'); /* Load the meta boxes. */ add_action("load-{$members->settings_page}", 'members_settings_page_load_meta_boxes'); /* Create a hook for adding meta boxes. */ add_action("load-{$members->settings_page}", 'members_settings_page_add_meta_boxes'); }
/** * Gets a setting from from the plugin settings in the database. * * @since 0.2.0 * @access public * @return mixed */ function members_get_setting($option = '') { $defaults = members_get_default_settings(); $settings = wp_parse_args(get_option('members_settings', $defaults), $defaults); return isset($settings[$option]) ? $settings[$option] : false; }