Created
May 12, 2013 18:53
-
-
Save middlesister/5564519 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action ('admin_init', 'childtheme_opt_init'); | |
/** | |
* Add childtheme settings to the thematic theme | |
* | |
* This will add childtheme options to the thematic theme settings | |
* in the database, and add to the existing theme options page in Thematic | |
**/ | |
function childtheme_opt_init() { | |
/* Add default values for the childtheme options to thematic default options array */ | |
add_filter( 'thematic_theme_default_opt','childtheme_add_default_ops', 10, 1 ); | |
/* Add childtheme field validation to thematic validation */ | |
add_filter( 'thematic_theme_opt_validation','childtheme_add_validation', 20, 2 ); | |
/* Add a settings section for our childtheme */ | |
add_settings_section( | |
'childtheme_section', // Slug of this section | |
__( 'Childtheme title', 'child-textdomain' ), // Title of this section (optional, can be empty string) | |
'childtheme_section_html', // Callback function for this section description | |
'thematic_theme_opt' // Add to the thematic setting sections | |
); | |
/* Add settings fields to the settings section */ | |
add_settings_field( | |
'childtheme_textarea', // Slug of the option | |
__( 'Write some text', 'child-textdomain' ), // Title of the option | |
'childtheme_pagetitle_top_html', // Callback for rendering the option | |
'thematic_theme_opt', // Add to the thematic setting sections | |
'childtheme_section' // Add to the section defined above | |
); | |
} | |
/** | |
* Add default values for the child theme options | |
* to the thematic options array | |
* | |
* @param array $defaults The thematic default options | |
* @return array $defaults The new defaults | |
**/ | |
function childtheme_add_default_ops( $defaults ) { | |
$defaults['childtheme_textarea'] = 'Bacon!'; | |
return $defaults; | |
} | |
/** | |
* Add validation of the child options to thematic | |
* | |
* Thematic takes care of the thematic form data, we only need | |
* to worry about the childtheme settings we have created. | |
* | |
* @param array $output The prepared array from thematic | |
* @param array $input The raw data from the form | |
* @return array $output The fully sanitized array | |
**/ | |
function childtheme_add_validation( $output, $input ) { | |
if ( isset( $input['childtheme_textarea'] ) ) { | |
$output['childtheme_textarea'] = wp_kses_post( $input['childtheme_textarea'] ) ; | |
} | |
return $output; | |
} | |
/** | |
* Do the title of settings section: childtheme_section | |
* | |
* Would be an optional description | |
**/ | |
function childtheme_section_html() { | |
// sound of one hand clapping | |
} | |
/** | |
* Render the textarea for childtheme option: childtheme_textarea | |
*/ | |
function childtheme_textarea_html() { | |
/* grab options from the database */ | |
$options = thematic_get_wp_opt( 'thematic_theme_opt', thematic_default_opt() ); | |
/* grab the default options */ | |
$defaults = thematic_default_opt(); | |
/* use default option if none exist in database */ | |
$options['childtheme_textarea'] = ( isset( $options['childtheme_textarea'] ) ? $options['childtheme_textarea'] : $defaults['childtheme_textarea'] ); | |
/* print the html */ | |
?> | |
<textarea rows="5" cols="94" id="childtheme_textarea" name="thematic_theme_opt[childtheme_textarea]"><?php echo $options['childtheme_textarea']; ?></textarea> | |
<?php | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Looks like it's a bug where callback is specified as childtheme_pagetitle_top_html. I have changed it into childtheme_textarea_html and my custom textarea appeared!
Thank you for example!