Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

83 lines (57 sloc) 3.459 kb
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' ) );
Jump to Line
Something went wrong with that request. Please try again.