1
|
1 |
<?php |
|
2 |
|
|
3 |
/** |
|
4 |
* Returns an array of the theme settings |
|
5 |
* Add all options to a single array |
|
6 |
* This makes one entry in the database |
|
7 |
* |
|
8 |
* @since 0.1 |
|
9 |
*/ |
|
10 |
function malleable_theme_settings() { |
|
11 |
$settings_arr = array( |
|
12 |
'general_address' => false, |
|
13 |
'general_address_street' => false, |
|
14 |
'general_address_city' => false, |
|
15 |
'general_address_state' => false, |
|
16 |
'general_address_zip' => false, |
|
17 |
'general_address_phone' => false, |
|
18 |
|
|
19 |
'feature_category' => false, |
|
20 |
'feature_num_posts' => false, |
|
21 |
'excerpt_category' => false, |
|
22 |
'excerpt_num_posts' => false, |
|
23 |
'headlines_category' => array(), |
|
24 |
'headlines_num_posts' => false, |
|
25 |
); |
|
26 |
|
|
27 |
return apply_filters('malleable_settings_args', $settings_arr); |
|
28 |
} |
|
29 |
|
|
30 |
/** |
|
31 |
* Handles the theme settings |
|
32 |
* |
|
33 |
* @since 0.1 |
|
34 |
*/ |
|
35 |
function malleable_theme_page() { |
|
36 |
|
|
37 |
/* |
|
38 |
* Variables to be used throughout the settings page |
|
39 |
*/ |
|
40 |
$theme_name = __('Malleable','malleable'); |
|
41 |
$settings_page_title = __('Malleable Theme Settings','malleable'); |
|
42 |
$hidden_field_name = 'malleable_submit_hidden'; |
|
43 |
|
|
44 |
/* |
|
45 |
* Get the theme settings and add them to the database |
|
46 |
*/ |
|
47 |
$settings_arr = malleable_theme_settings(); |
|
48 |
add_option('malleable_theme_settings', $settings_arr); |
|
49 |
|
|
50 |
/* |
|
51 |
* Set form data IDs the same as settings keys |
|
52 |
*/ |
|
53 |
$settings_keys = array_keys($settings_arr); |
|
54 |
foreach($settings_keys as $key) : |
|
55 |
$data[$key] = $key; |
|
56 |
endforeach; |
|
57 |
|
|
58 |
/* |
|
59 |
* Get existing options from the database |
|
60 |
*/ |
|
61 |
$settings = get_option('malleable_theme_settings'); |
|
62 |
|
|
63 |
foreach($settings_arr as $key => $value) : |
|
64 |
$val[$key] = $settings[$key]; |
|
65 |
endforeach; |
|
66 |
|
|
67 |
/* |
|
68 |
* If the form has been set |
|
69 |
* Loop through the values |
|
70 |
* Set the option in the database |
|
71 |
*/ |
|
72 |
if($_POST[$hidden_field_name] == 'Y') : |
|
73 |
|
|
74 |
foreach($settings_arr as $key => $value) : |
|
75 |
$settings[$key] = $val[$key] = $_POST[$data[$key]]; |
|
76 |
endforeach; |
|
77 |
|
|
78 |
update_option('malleable_theme_settings', $settings); |
|
79 |
|
|
80 |
/* |
|
81 |
* Open main div for the theme settings |
|
82 |
*/ |
|
83 |
echo '<div class="wrap">'; |
|
84 |
echo '<h2>' . $settings_page_title . '</h2>'; |
|
85 |
echo '<div class="updated" style="margin:15px 0;">'; |
|
86 |
echo '<p><strong>' . __('Settings saved.','malleable') . '</strong></p>'; |
|
87 |
echo '</div>'; |
|
88 |
|
|
89 |
else : |
|
90 |
echo '<div class="wrap">'; |
|
91 |
echo '<h2>' . $settings_page_title . '</h2>'; |
|
92 |
|
|
93 |
endif; |
|
94 |
|
|
95 |
/* |
|
96 |
* Load the theme settings form |
|
97 |
*/ |
|
98 |
include(MALLEABLE . '/library/admin/theme-settings-xhtml.php'); |
|
99 |
} |
|
100 |
|
|
101 |
?> |