function nattywp_validate_options($input) { $valid_input = array(); $settings_output = nattywp_get_settings(); $options = $settings_output['nattywp_page_fields']; $nattywp_option_name = $settings_output['nattywp_option_name']; $settings_group = $settings_output['page_option_name']; $input = $input[$settings_group]; $valid_input[$settings_group] = $valid_input; $merged_options = get_option($nattywp_option_name); foreach ($options as $option) { if (isset($option['filter'])) { switch ($option['filter']) { case 'multi': if (isset($input[$option['name']])) { $valid_input[$settings_group][$option['name']] = $input[$option['name']]; } else { $valid_input[$settings_group][$option['name']] = $option['default']; } break; case 'nohtml': $valid_input[$settings_group][$option['name']] = sanitize_text_field($input[$option['name']]); $valid_input[$settings_group][$option['name']] = strip_html_tags($valid_input[$settings_group][$option['name']]); $valid_input[$settings_group][$option['name']] = addslashes($valid_input[$settings_group][$option['name']]); break; case 'url': $input[$option['name']] = trim($input[$option['name']]); // trim whitespace $valid_input[$settings_group][$option['name']] = esc_url_raw($input[$option['name']]); break; case 'num': $input[$option['name']] = trim($input[$option['name']]); // trim whitespace $valid_input[$settings_group][$option['name']] = is_numeric($input[$option['name']]) ? $input[$option['name']] : $option['default']; // register error if (is_numeric($input[$option['name']]) == FALSE) { add_settings_error($option['name'], 'nattywp_txt_numeric_error', __('Expecting a Numeric value! Please fix.', 'silesia'), 'error'); } break; default: $valid_input[$settings_group][$option['name']] = $input[$option['name']]; break; } } else { $valid_input[$settings_group][$option['name']] = $input[$option['name']]; } } if (!is_array($merged_options)) { $merged_options = array(); } return array_merge($merged_options, $valid_input); }
function nattywp_form_color_field_fn($args = array()) { extract($args); $settings_output = nattywp_get_settings(); $nattywp_option_name = $settings_output['nattywp_option_name']; $settings_group = $settings_output['page_option_name']; $options = get_option($nattywp_option_name); if (isset($options[$settings_group])) { $options = $options[$settings_group]; } // pass the default value if (!isset($options[$name])) { $options[$name] = $default; } // render form elements switch ($type) { case 'color': case 'color:hover': case 'background-color': $options[$name] = stripslashes($options[$name]); $options[$name] = esc_attr($options[$name]); echo "<input class='picker-input' type='text' size=\"7\" maxlenght=\"7\" id='{$name}' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]' value='{$options[$name]}' onchange=\"get_option('{$name}')\" />"; echo "<div class='picker' id='myRainbow_" . $name . "_input'><div class='overlay'></div></div>\n"; break; case 'font-size': echo "<select id='{$name}' class='select' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]'>"; foreach ($sizes as $title => $item) { $value = esc_attr($item, 'silesia'); $item = esc_html($title, 'silesia'); echo "<option value='{$value}'" . selected($options[$name], $value) . ">{$item}</option>"; } echo "</select>"; break; case 'background-image': echo "<input class='background-input' type='text' id='{$name}' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]' value='{$options[$name]}' />"; break; case 'select-custom': echo "<select id='{$name}' class='select' onchange=\"kDefaults()\" name='" . $nattywp_option_name . "[{$settings_group}][{$name}]'>"; foreach ($associated as $title => $item) { $value = esc_attr($item, 'silesia'); $item = esc_html($title, 'silesia'); echo "<option value='{$value}'" . selected($options[$name], $value) . ">{$item}</option>"; } echo "</select>"; break; } }
function nattywp_register_settings() { $settings_output = nattywp_get_settings(); $nattywp_option_name = $settings_output['nattywp_option_name']; // validate register_setting($nattywp_option_name, $nattywp_option_name, 'nattywp_validate_options'); // sections settings if (!empty($settings_output['nattywp_page_sections'])) { foreach ($settings_output['nattywp_page_sections'] as $id => $title) { add_settings_section($title[0], $title['title'], 'nattywp_section_fn', __FILE__); } } //fields if (!empty($settings_output['nattywp_page_fields'])) { foreach ($settings_output['nattywp_page_fields'] as $option) { add_settings_field($option['name'], $option['title'], $settings_output['nattywp_form_field'], __FILE__, $option['section'][0], $option); } } }
function nattywp_form_field_fn($args = array()) { extract($args); $settings_output = nattywp_get_settings(); $nattywp_option_name = $settings_output['nattywp_option_name']; $settings_group = $settings_output['page_option_name']; $options = get_option($nattywp_option_name); if (isset($options[$settings_group])) { $options = $options[$settings_group]; } // pass the default value if (!isset($options[$name])) { $options[$name] = $default; } // render form elements switch ($type) { case 'input': $options[$name] = stripslashes($options[$name]); $options[$name] = esc_attr($options[$name]); echo "<input class='regular-text' type='text' id='{$name}' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]' value='{$options[$name]}' />"; echo $desc != '' ? "<div class='description'>{$desc}</div>" : ""; break; case 'textarea': $options[$name] = stripslashes($options[$name]); $options[$name] = esc_html($options[$name]); echo "<textarea class='textarea' type='text' id='{$name}' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]' rows='5' cols='30'>{$options[$name]}</textarea>"; echo $desc != '' ? "<div class='description'>{$desc}</div>" : ""; break; case 'select': echo "<select id='{$name}' class='select' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]'>"; foreach ($associated as $title => $item) { $value = esc_attr($item, 'silesia'); $item = esc_html($title, 'silesia'); echo "<option value='{$value}'" . selected($options[$name], $value) . ">{$item}</option>"; } echo "</select>"; echo $desc != '' ? "<div class='description'>{$desc}</div>" : ""; break; case 'select-bool': $boolean_var = array(__('Yes', 'silesia') => 'yes', __('No', 'silesia') => 'no'); echo "<select id='{$name}' class='select' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]'>"; foreach ($boolean_var as $title => $item) { $value = esc_attr($item, 'silesia'); $item = esc_html($title, 'silesia'); echo "<option value='{$value}'" . selected($options[$name], $value) . ">{$item}</option>"; } echo "</select>"; echo $desc != '' ? "<div class='description'>{$desc}</div>" : ""; break; case 'upload': if (!isset($btn_name)) { $btn_name = __('Upload Image', 'silesia'); } echo "<div class='form-uploader'><input class='upl-inp' name='" . $nattywp_option_name . "[{$settings_group}][{$name}]' id='" . $name . "_upload' type='text' value='{$options[$name]}' />"; echo '<div class="upload_button_div"><span class="button image_upload_button" id="' . $name . '">' . $btn_name . '</span>'; if (!empty($options[$name])) { $hide = ''; } else { $hide = 'hide'; } echo '<span class="button image_reset_button ' . $hide . '" id="reset_' . $name . '" title="' . $name . '">' . __('Remove', 'silesia') . '</span></div>' . "\n"; if (!empty($options[$name])) { echo '<div class="clear"></div>' . "\n"; echo '<img class="custom-logo-image" id="image_' . $name . '" src="' . $options[$name] . '" alt="" />'; } echo '<div class="clear"></div> </div>' . "\n"; echo $desc != '' ? "<div class='description'>{$desc}</div>" : ""; break; case 'multi-select': echo "<select multiple=\"true\" size=\"7\" style=\"height:150px;\" id='{$name}' class='multi-select' name='" . $nattywp_option_name . "[{$settings_group}][{$name}][]'>"; foreach ($associated as $title => $item) { $value = esc_attr($item, 'silesia'); $item = esc_html($title, 'silesia'); echo "<option value='{$value}'" . selected($options[$name], $value) . ">{$item}</option>"; } echo "</select>"; echo $desc != '' ? "<div class='description'>{$desc}</div>" : ""; break; case 'sort-item': $pn_pages = get_pages(''); foreach ($pn_pages as $pag) { $pn_pag[] = array($pag->ID, $pag->post_title); } echo "<select id='{$name}' class=\"multiselect\" multiple=\"multiple\" name='" . $nattywp_option_name . "[{$settings_group}][{$name}][]'>"; foreach ($pn_pag as $key => $arr) { if (is_array($options[$name])) { echo "<option value=\"" . $arr[0] . "\"" . selected(in_array($arr[0], $options[$name]), true) . ">" . $arr[1] . "</option>\n"; } else { echo "<option value=\"" . $arr[0] . "\"" . selected($arr[0], 'no') . ">" . $arr[1] . "</option>\n"; } } echo "</select><div id=\"switcher\"></div>"; echo $desc != '' ? "<div class='description inline'>{$desc}</div>" : ""; break; } }