• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
WordPress core a2z

WordPress core a2z

WordPress core only

  • Home
  • Plugins
  • Blocks
  • Shortcodes
  • APIs
  • Classes
  • Files
  • Hooks
  • Sitemap
  • Blog
Home / APIs / register_setting() – Registers a setting and its data.

You appear to be a bot. Output may be restricted

Description

Registers a setting and its data.

Usage

register_setting( $option_group, $option_name, $args );

Parameters

$option_group
( string ) required – A settings group name. Should correspond to an allowed option key name. Default allowed option key names include 'general', 'discussion', 'media', 'reading', 'writing', 'misc', 'options', and 'privacy'.
$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 ) optional – The type of data associated with this setting. Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'.
$description
( string ) optional – A description of the data attached to this setting.
$sanitize_callback
( callable ) optional – A callback function that sanitizes the option's value.
$show_in_rest
( bool|array ) optional – Whether data associated with this setting should be included in the REST API. When registering complex settings, this argument may optionally be an array with a 'schema' key.
$default
( mixed ) optional – Default value when calling `get_option()`. }

Returns

void

Source

File name: wordpress/wp-includes/option.php
Lines:

1 to 95 of 95
function register_setting( $option_group, $option_name, $args = array() ) {
  global $new_allowed_options, $wp_registered_settings;

  /*
	 * In 5.5.0, the `$new_whitelist_options` global variable was renamed to `$new_allowed_options`.
	 * Please consider writing more inclusive code.
	 */
  $GLOBALS['new_whitelist_options'] = &$new_allowed_options;

  $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 );

  // Require an item schema when registering settings with an array type.
  if ( false !== $args['show_in_rest'] && 'array' === $args['type'] && ( ! is_array( $args['show_in_rest'] ) || ! isset( $args['show_in_rest']['schema']['items'] ) ) ) {
    _doing_it_wrong( register_setting, __( 'When registering an "array" setting to show in the REST API, you must specify the schema for each array item in "show_in_rest.schema.items".' ), '5.4.0' );
  }

  if ( ! is_array( $wp_registered_settings ) ) {
    $wp_registered_settings = array();
  }

  if ( 'misc' === $option_group ) {
    _deprecated_argument(
      register_setting,
      '3.0.0',
      sprintf(
        /* translators: %s: misc */
        __( 'The "%s" options group has been removed. Use another settings group.' ),
        'misc'
      )
    );
    $option_group = 'general';
  }

  if ( 'privacy' === $option_group ) {
    _deprecated_argument(
      register_setting,
      '3.5.0',
      sprintf(
        /* translators: %s: privacy */
        __( 'The "%s" options group has been removed. Use another settings group.' ),
        'privacy'
      )
    );
    $option_group = 'reading';
  }

  $new_allowed_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 );
  }

  
/**
 * Fires immediately before the setting is registered but after its filters are in place.
 *
 * @since 5.5.0
 *
 * @param string $option_group Setting group.
 * @param string $option_name  Setting name.
 * @param array  $args         Array of setting registration arguments.
 */
  do_action( 'register_setting', $option_group, $option_name, $args );

  $wp_registered_settings[ $option_name ] = $args;
}
 

 View on GitHub View on Trac

Published: 25th November 2019 | Last updated: 21st August 2020

Primary Sidebar

Information

Function name: register_setting
Plugin ref: WordPress
Version: 5.6
Sourcefile: wp-includes/option.php
File ref: wp-includes/option.php
Deprecated?: No
API Letters: R,S

Footer

WP-a2z
WordPress core a2z
WordPress core only
WordPress 5.6
WordPress a2z
WordPress core a2z
Genesis Theme Framework a2z
Jetpack a2z
WordPress develop tests
Easy Digital Downloads a2z
WooCommerce a2z
Yoast SEO a2z
WordPress Blocks

Site:  core.wp-a2z.org
© Copyright WP-a2z 2014-2021. All rights reserved.


Website designed and developed by Herb Miller
Proudly powered by WordPress and oik plugins

  • Home
  • Blog
  • Sitemap
  • Sites