id summary reporter owner description type status priority milestone component version severity resolution keywords cc focuses 21488 Add Default Callback Functions for add_settings_field() mordauk "By default, when creating options in plugins and themes, every developer is required to create custom callback functions for rendering their option's HTML. The HTML for most options is nothing more than a standard INPUT field, a SELECT field, TEXTAREA field, etc, so there's really no reason there shouldn't be default callback options in place. For example, if I have a plugin that registers one text field option in the General settings page, it really doesn't make sense that I should be forced to create a callback function, especially not when probably 99% of all text fields are outputted in exactly the same way: {{{
The description of the field (if present)
}}} With default field callbacks available, developers can do this: {{{ function pw_register_settings() { register_setting( 'general', 'pw_sample_option', 'esc_attr' ); add_settings_section( 'pw_sample_section', 'This is a Sample Section', 'pw_sample_section_cb', 'general'); add_settings_field( 'pw_sample_option', 'A Sample Setting', 'text', 'general', 'pw_sample_section', array( 'description' => 'The field description' ) ); } add_action('admin_init', 'pw_test_settings'); function pw_sample_section_cb() { // this is the section HTML (if you want it) } }}} This is much simpler than also having to write the callback function to render the HTML for the option. The patch attached adds the following default callbacks: * text * textarea * select * radio * checkbox * checkbox_group For select, radio, and checkbox groups, the options are passed as an array of ""choices"" in the last, optional $args parameter for add_settings_field(): {{{ $options = array( 'one' => 'The Choice Name', 'two' => 'The Second name', 'three' => 'The Third option' ); add_settings_field( 'pw_sample_option', 'A Sample Setting', 'select', 'general', 'pw_sample_section', array( 'choices' => $options, 'description' => 'This is a select' ) ); }}} When a user wants to create a custom callback function, this is still allowed as call_user_func() is the default in the `$field['callback']` switch statement for the do_settings_fields() function." enhancement closed normal Plugins normal duplicate has-patch dev-feedback administration