'. __('Settings saved.', THEME_NS) .'

'."\n"; } if ( isset($_REQUEST['Reset']) ) { foreach ($theme_options as $value) { delete_option(theme_get_array_value($value, 'id')); } echo '

'. __('Settings restored.', THEME_NS) . '

'."\n"; } echo '
'."\n"; $in_form_table = false; foreach ($theme_options as $op) { $type = theme_get_array_value($op, 'type'); $name = theme_get_array_value($op, 'name'); $desc = theme_get_array_value($op, 'desc'); if ($type == 'heading'){ if ($in_form_table) { echo ''."\n"; $in_form_table = false; } echo '

'.$name.'

'."\n"; if ($desc) { echo "\n".'

'.$desc.'

'."\n"; } } else { if (!$in_form_table) { echo ''."\n"; $in_form_table = true; } echo ''."\n"; echo ''."\n"; echo ''."\n"; echo ''."\n"; } } if ($in_form_table) { echo '
'.$name.''."\n"; $id = theme_get_array_value($op, 'id'); $val = theme_get_option($id); theme_print_option_control($op, $val); if ($desc) { echo ''.$desc.''."\n"; } echo '
'."\n"; } ?>

'."\n"; break; case 'select': echo ''."\n"; break; case 'textarea': echo '
'."\n"; break; case "radio": foreach ($op['options'] as $key=>$option) { $checked = ( $key == $val ? 'checked="checked"' : ''); echo ''.esc_html($option).'
'."\n"; } break; case "checkbox": $checked = ($val ? 'checked="checked" ' : ''); echo ''."\n"; break; default: $class = 'regular-text'; if ($type == 'numeric'){ $type = 'text'; $class = 'small-text'; $val = absint($val); } if ($type == 'widetext') { $class = 'large-text'; } echo ''."\n"; break; } } // Not support old wp version if (WP_VERSION < 3.0) return; function theme_add_meta_boxes() { add_meta_box( 'theme_meta_box', __('Theme Options', THEME_NS), 'theme_print_page_meta_box', 'page', 'side', 'low' ); add_meta_box( 'theme_meta_box', __('Theme Options', THEME_NS), 'theme_print_post_meta_box', 'post', 'side', 'low' ); } /* Prints meta box content */ function theme_print_page_meta_box($post) { global $theme_page_meta_options; theme_print_meta_box($post, $theme_page_meta_options); } function theme_print_post_meta_box($post) { global $theme_post_meta_options; theme_print_meta_box($post, $theme_post_meta_options); } function theme_print_meta_box($post, $meta_options) { // Use nonce for verification wp_nonce_field('theme_meta_options', 'theme_meta_noncename'); if (!isset($post)) return; foreach ($meta_options as $option) { $id = theme_get_array_value($option, 'id'); $name = theme_get_array_value($option, 'name'); $desc = theme_get_array_value($option, 'desc'); $value = theme_get_meta_option($post->ID, $id); $necessary = theme_get_array_value($option, 'necessary'); if ($necessary && !current_user_can($necessary)) continue; echo '


'; theme_print_option_control($option, $value); if ($desc) { echo ''.$desc.''; } echo'

'; } } // post metadata /* When the post is saved, saves our data */ function theme_save_post($post_id) { global $theme_post_meta_options, $theme_page_meta_options; // verify this came from the our screen and with proper authorization, // because save_post can be triggered at other times if (!isset($_POST['theme_meta_noncename']) || !wp_verify_nonce($_POST['theme_meta_noncename'], 'theme_meta_options' )) { return $post_id; } // verify if this is an auto save routine. If it is our form has not been submitted, so we dont want // to do anything if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; $meta_options = null;//posts if ( 'page' == $_POST['post_type']) { // Check permissions if (!current_user_can( 'edit_page', $post_id ) ){ return $post_id; } $meta_options = $theme_page_meta_options; } if ( 'post' == $_POST['post_type']) { $meta_options = $theme_post_meta_options; } if (!$meta_options) return $post_id; // OK, we're authenticated: we need to find and save the data foreach ($meta_options as $value) { $id = theme_get_array_value($value, 'id'); $val = stripslashes(theme_get_array_value($_REQUEST, $id)); $type = theme_get_array_value($value, 'type'); $necessary = theme_get_array_value($value, 'necessary'); if ($necessary && !current_user_can($necessary)) continue; switch($type){ case 'checkbox': $val = ($val ? 1 : 0); break; case 'numeric': $val = (int) $val; break; } theme_set_meta_option($post_id, $id, $val); } return $post_id; } ?>