register_setting( string $option_group, string $option_name, array $args = array() )
Register a setting and its data.
Description Description
Parameters Parameters
- $option_group
-
(string) (Required) A settings group name. Should correspond to a whitelisted option key name. Default whitelisted option key names include "general," "discussion," and "reading," among others.
- $option_name
-
(string) (Required) The name of an option to sanitize and save.
- $args
-
(array) (Optional) Data used to describe the setting when registered.
- 'type'
(string) The type of data associated with this setting. Valid values are 'string', 'boolean', 'integer', and 'number'. - 'description'
(string) A description of the data attached to this setting. - 'sanitize_callback'
(callable) A callback function that sanitizes the option's value. - 'show_in_rest'
(bool) Whether data associated with this setting should be included in the REST API. - 'default'
(mixed) Default value when callingget_option()
.
Default value: array()
- 'type'
Source Source
File: wp-includes/option.php
function register_setting( $option_group, $option_name, $args = array() ) { global $new_whitelist_options, $wp_registered_settings; $defaults = array( 'type' => 'string', 'group' => $option_group, 'description' => '', 'sanitize_callback' => null, 'show_in_rest' => false, ); // Back-compat: old sanitize callback is added. if ( is_callable( $args ) ) { $args = array( 'sanitize_callback' => $args, ); } /** * Filters the registration arguments when registering a setting. * * @since 4.7.0 * * @param array $args Array of setting registration arguments. * @param array $defaults Array of default arguments. * @param string $option_group Setting group. * @param string $option_name Setting name. */ $args = apply_filters( 'register_setting_args', $args, $defaults, $option_group, $option_name ); $args = wp_parse_args( $args, $defaults ); if ( ! is_array( $wp_registered_settings ) ) { $wp_registered_settings = array(); } if ( 'misc' == $option_group ) { _deprecated_argument( __FUNCTION__, '3.0.0', /* translators: %s: misc */ sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'misc' ) ); $option_group = 'general'; } if ( 'privacy' == $option_group ) { _deprecated_argument( __FUNCTION__, '3.5.0', /* translators: %s: privacy */ sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) ); $option_group = 'reading'; } $new_whitelist_options[ $option_group ][] = $option_name; if ( ! empty( $args['sanitize_callback'] ) ) { add_filter( "sanitize_option_{$option_name}", $args['sanitize_callback'] ); } if ( array_key_exists( 'default', $args ) ) { add_filter( "default_option_{$option_name}", 'filter_default_option', 10, 3 ); } $wp_registered_settings[ $option_name ] = $args; }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
4.7.0 | $args can be passed to set flags on the setting, similar to register_meta() . |
2.7.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Basic Example
The sanitize callback will be launched twice! Therefore, if sanitizing involves any performance critical or singular tasks, then measures must be taken in the callback to avoid duplicate execution of those portions.
Expand full source codeCollapse full source code