/** * retrieves settings option from DB or defaults if they do not exist * * @return array settings data array */ function clgs_get_settings() { $settings_defaults = clgs_settings_defaults(); if (clgs_is_network_mode()) { unset($settings_defaults['manager_role']); $settings = get_site_option(CLGS_SETTINGS, array()); } else { $settings = get_option(CLGS_SETTINGS, array()); } $args = wp_parse_args($settings, $settings_defaults); // needed? return $args; }
/** * writes default settings to DB option * * @global array $clgs_settings_structure * * @param bool $network_wide indicates network install * * @return void */ function clgs_add_settings($network_wide) { global $clgs_settings_structure; $settings_defaults = clgs_settings_defaults(); if ($network_wide) { unset($settings_defaults['manager_role']); unset($clgs_settings_structure['manager_role']); } else { foreach (clgs_get_settings()['manager_role'] as $key => $name) { wp_roles()->add_cap($name, CLGS_CAP); } } add_site_option(CLGS_SETTINGS, $settings_defaults); }