/** * Initiate options from options array */ public function pn_settings_init() { $this->options = Pn::getOptions(); /** * TODO set default values * $options = get_option('pn_settings'); * */ foreach ($this->options as $step => $props) { register_setting('pn_option_page_' . $step, 'pn_settings'); add_settings_section(strtolower(str_replace(' ', '_', $props['page_title'])), $props['page_description'], $this->pn_settings_section_callback(), 'pn_option_page_' . $step); /** * Use options array to build PN options */ foreach ($props['fields'] as $key => $value) { /** * TODO set default values * if ( !isset( $options[$value['option_name']] ) ) * add_option( $value['option_name'], $value['default']); * */ add_settings_field($key, $value['label'], array(&$this, 'pn_' . $value['field_type'] . '_field_render'), 'pn_option_page_' . $step, strtolower(str_replace(' ', '_', $props['page_title'])), array('option_name' => $value['option_name'], 'options' => $value['options'])); } } }