unregister_setting() – Unregisters a setting.

You appear to be a bot. Output may be restricted

Description

Unregisters a setting.

Usage

unregister_setting( $option_group, $option_name, $deprecated );

Parameters

$option_group
( string ) required – The settings group name used during registration.
$option_name
( string ) required – The name of the option to unregister.
$deprecated
( callable ) optional – Optional. Deprecated.

Returns

void

Source

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

1 to 79 of 79
function unregister_setting( $option_group, $option_name, $deprecated = '' ) {
  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;

  if ( 'misc' === $option_group ) {
    _deprecated_argument(
      unregister_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(
      unregister_setting,
      '3.5.0',
      sprintf(
        /* translators: %s: privacy */
        __( 'The "%s" options group has been removed. Use another settings group.' ),
        'privacy'
      )
    );
    $option_group = 'reading';
  }

  $pos = array_search( $option_name, (array) $new_allowed_options[ $option_group ], true );

  if ( false !== $pos ) {
    unset( $new_allowed_options[ $option_group ][ $pos ] );
  }

  if ( '' !== $deprecated ) {
    _deprecated_argument(
      unregister_setting,
      '4.7.0',
      sprintf(
        /* translators: 1: $sanitize_callback, 2: register_setting() */
        __( '%1$s is deprecated. The callback from %2$s is used instead.' ),
        '<code>$sanitize_callback</code>',
        '<code>register_setting()</code>'
      )
    );
    remove_filter( "sanitize_option_{$option_name}", $deprecated );
  }

  if ( isset( $wp_registered_settings[ $option_name ] ) ) {
    // Remove the sanitize callback if one was set during registration.
    if ( ! empty( $wp_registered_settings[ $option_name ]['sanitize_callback'] ) ) {
      remove_filter( "sanitize_option_{$option_name}", $wp_registered_settings[ $option_name ]['sanitize_callback'] );
    }

    // Remove the default filter if a default was provided during registration.
    if ( array_key_exists( 'default', $wp_registered_settings[ $option_name ] ) ) {
      remove_filter( "default_option_{$option_name}", 'filter_default_option', 10 );
    }

    
/**
 * Fires immediately before the setting is unregistered and after its filters have been removed.
 *
 * @since 5.5.0
 *
 * @param string $option_group Setting group.
 * @param string $option_name  Setting name.
 */
    do_action( 'unregister_setting', $option_group, $option_name );

    unset( $wp_registered_settings[ $option_name ] );
  }
}
 

 View on GitHub View on Trac