BareSkin Theme v. 0.8

## Adding new theme settings ## 

# Adding a box to the settings page:
 - you must use the "add_meta_boxes" action hook:
 
	add_action( 'add_meta_boxes', 'bareskin_meta_box_add_new_box' );
	
- either use the global $bareskin_settings_page or 'appearance_page_theme-settings'
- add_meta_box $context var can be 'normal', 'side' or 'advanced'

	function bareskin_meta_box_add_new_box() {		
		global $bareskin_settings_page;
		/* Get theme information. */
		$prefix = bareskin_get_prefix();
		$domain = bareskin_get_textdomain();
		
		add_meta_box( 'new-metabox-slug', __( 'New Meta Box', $domain ), 'bareskin_meta_box_new_box_display', $bareskin_settings_page, 'side', 'high' );	

	}
- the processing of the actual fields is done using the Settings API. No need to bother with nonce.
- you must use bareskin_settings_field_name('example-name') to generate a name attribute for the field, and  bareskin_get_setting('example-name') to retrive the value. 	
	function bareskin_meta_box_new_box_display(){
		$domain = bareskin_get_textdomain();
		?>
		<p>
			<span class="description"><?php _e( 'This is a new meta box .', $domain ); ?></span>
		</p>
		
		<p>
			<input type="text" id="<?php echo bareskin_settings_field_id( 'new_input_text' ); ?>" name="<?php echo bareskin_settings_field_name( 'new_input_text' ); ?>" value="<?php echo esc_attr( bareskin_get_setting( 'new_input_text' ) ); ?>" />
			<textarea id="<?php echo bareskin_settings_field_id( 'new_textarea' ); ?>" name="<?php echo bareskin_settings_field_name( 'new_textarea' ); ?>" cols="60" rows="5"><?php echo esc_textarea( bareskin_get_setting( 'new_textarea' ) ); ?></textarea>
		</p>
		<?php	
	}

# Optional: Sanitizing the settings or processing them in any unconventional way 

- use the '{$prefix}_add_to_validation' filter where prefix is the slug of your theme. You can retrieve it using bareskin_get_prefix();
 
	/* Sanitize the settings before adding them to the database. */
	add_filter( bareskin_get_prefix().'_add_to_validation', 'bareskin_new_meta_box_sanitize' );

- recieves $settings array and must return it
	function bareskin_new_meta_box_sanitize( $settings ){
	
		/* Make sure we kill evil scripts from users without the 'unfiltered_html' cap. */
		if ( isset( $settings['new_textarea'] ) && !current_user_can( 'unfiltered_html' ) )
			$settings['new_textarea'] = stripslashes( wp_filter_post_kses( addslashes( $settings['new_textarea'] ) ) );
		
		return $settings;
	}

# Optional: add default settings

- use '{$prefix}_default_theme_settings' filter


## Adding menus 

- in the add_theme_support( 'bareskin-menus' ) call fom functions.php you must pass a second parameter like this:
	/*two menus will be registered: 'primary' and 'secondary' */
	add_theme_support( 'bareskin-menus', array( 'primary', 'secondary' ) );

## Adding sidebars

- use the 'bareskin_register_sidebars' filter like this

	add_filter('bareskin_register_sidebars', 'add_some_new_sidebars' );

	function add_some_new_sidebars($sidebars){
		$domain = bareskin_get_textdomain();
		
		$sidebars['new-sidebar'] = array(
				'name' =>	_x( 'New Sidebare', 'sidebar', $domain ),
				'description' =>	__( 'Loaded on singular post (page, attachment, etc.) views before the comments area.', $domain ));
		return $sidebars;
	}
- pass to the second argument of add_theme_support('bareskin-sidebars')' the sidebar id like so

	add_theme_support( 'bareskin-sidebars', array( 'new-sidebar' ) );