unregister_setting

The timeline below displays how wordpress function unregister_setting has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Unregisters a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 * @since 5.5.0 `$new_whitelist_options` was renamed to `$new_allowed_options`.
 *              Please consider writing more inclusive code.
 *
 * @global array $new_allowed_options
 * @global array $wp_registered_settings
 *
 * @param string   $option_group The settings group name used during registration.
 * @param string   $option_name  The name of the option to unregister.
 * @param callable $deprecated   Optional. Deprecated.
 */
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(__FUNCTION__, '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(__FUNCTION__, '3.5.0', sprintf(
            /* translators: %s: privacy */
            __('The "%s" options group has been removed. Use another settings group.'),
            'privacy'
        ));
        $option_group = 'reading';
    }
    $pos = false;
    if (isset($new_allowed_options[$option_group])) {
        $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(__FUNCTION__, '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]);
    }
}

WordPress Version: 5.9

/**
 * Unregisters a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 * @since 5.5.0 `$new_whitelist_options` was renamed to `$new_allowed_options`.
 *              Please consider writing more inclusive code.
 *
 * @global array $new_allowed_options
 * @global array $wp_registered_settings
 *
 * @param string   $option_group The settings group name used during registration.
 * @param string   $option_name  The name of the option to unregister.
 * @param callable $deprecated   Optional. Deprecated.
 */
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(__FUNCTION__, '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(__FUNCTION__, '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(__FUNCTION__, '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]);
    }
}

WordPress Version: 5.7

/**
 * Unregisters a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 * @since 5.5.0 `$new_whitelist_options` was renamed to `$new_allowed_options`.
 *              Please consider writing more inclusive code.
 *
 * @global array $new_allowed_options
 * @global array $wp_registered_settings
 *
 * @param string          $option_group The settings group name used during registration.
 * @param string          $option_name  The name of the option to unregister.
 * @param callable|string $deprecated   Deprecated.
 */
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(__FUNCTION__, '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(__FUNCTION__, '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(__FUNCTION__, '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]);
    }
}

WordPress Version: 5.5

/**
 * Unregisters a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 * @since 5.5.0 `$new_whitelist_options` was renamed to `$new_allowed_options`.
 *              Please consider writing more inclusive code.
 *
 * @global array $new_allowed_options
 * @global array $wp_registered_settings
 *
 * @param string   $option_group The settings group name used during registration.
 * @param string   $option_name  The name of the option to unregister.
 * @param callable $deprecated   Deprecated.
 */
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(__FUNCTION__, '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(__FUNCTION__, '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(__FUNCTION__, '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]);
    }
}

WordPress Version: 5.4

/**
 * Unregisters a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 *
 * @global array $new_whitelist_options
 * @global array $wp_registered_settings
 *
 * @param string   $option_group      The settings group name used during registration.
 * @param string   $option_name       The name of the option to unregister.
 * @param callable $deprecated        Deprecated.
 */
function unregister_setting($option_group, $option_name, $deprecated = '')
{
    global $new_whitelist_options, $wp_registered_settings;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '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(__FUNCTION__, '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_whitelist_options[$option_group]);
    if (false !== $pos) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ('' !== $deprecated) {
        _deprecated_argument(__FUNCTION__, '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);
        }
        unset($wp_registered_settings[$option_name]);
    }
}

WordPress Version: 5.3

/**
 * Unregister a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 *
 * @global array $new_whitelist_options
 * @global array $wp_registered_settings
 *
 * @param string   $option_group      The settings group name used during registration.
 * @param string   $option_name       The name of the option to unregister.
 * @param callable $deprecated        Deprecated.
 */
function unregister_setting($option_group, $option_name, $deprecated = '')
{
    global $new_whitelist_options, $wp_registered_settings;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '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(__FUNCTION__, '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_whitelist_options[$option_group]);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ('' !== $deprecated) {
        _deprecated_argument(__FUNCTION__, '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);
        }
        unset($wp_registered_settings[$option_name]);
    }
}

WordPress Version: 5.1

/**
 * Unregister a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 *
 * @global array $new_whitelist_options
 * @global array $wp_registered_settings
 *
 * @param string   $option_group      The settings group name used during registration.
 * @param string   $option_name       The name of the option to unregister.
 * @param callable $deprecated        Deprecated.
 */
function unregister_setting($option_group, $option_name, $deprecated = '')
{
    global $new_whitelist_options, $wp_registered_settings;
    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';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options[$option_group]);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ('' !== $deprecated) {
        _deprecated_argument(
            __FUNCTION__,
            '4.7.0',
            /* translators: 1: $sanitize_callback, 2: register_setting() */
            sprintf(__('%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);
        }
        unset($wp_registered_settings[$option_name]);
    }
}

WordPress Version: 4.8

/**
 * Unregister a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 *
 * @global array $new_whitelist_options
 *
 * @param string   $option_group      The settings group name used during registration.
 * @param string   $option_name       The name of the option to unregister.
 * @param callable $deprecated        Deprecated.
 */
function unregister_setting($option_group, $option_name, $deprecated = '')
{
    global $new_whitelist_options, $wp_registered_settings;
    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';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options[$option_group]);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ('' !== $deprecated) {
        _deprecated_argument(
            __FUNCTION__,
            '4.7.0',
            /* translators: 1: $sanitize_callback, 2: register_setting() */
            sprintf(__('%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']);
        }
        unset($wp_registered_settings[$option_name]);
    }
}

WordPress Version: 4.7

/**
 * Unregister a setting.
 *
 * @since 2.7.0
 * @since 4.7.0 `$sanitize_callback` was deprecated. The callback from `register_setting()` is now used instead.
 *
 * @global array $new_whitelist_options
 *
 * @param string   $option_group      The settings group name used during registration.
 * @param string   $option_name       The name of the option to unregister.
 * @param callable $deprecated        Deprecated.
 */
function unregister_setting($option_group, $option_name, $deprecated = '')
{
    global $new_whitelist_options, $wp_registered_settings;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '3.0.0', 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', sprintf(__('The "%s" options group has been removed. Use another settings group.'), 'privacy'));
        $option_group = 'reading';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options[$option_group]);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ('' !== $deprecated) {
        _deprecated_argument(__FUNCTION__, '4.7.0', __('$sanitize_callback is deprecated. The callback from register_setting() is used instead.'));
        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']);
        }
        unset($wp_registered_settings[$option_name]);
    }
}

WordPress Version: 4.6

/**
 * Unregister a setting
 *
 * @since 2.7.0
 *
 * @global array $new_whitelist_options
 *
 * @param string   $option_group
 * @param string   $option_name
 * @param callable $sanitize_callback
 */
function unregister_setting($option_group, $option_name, $sanitize_callback = '')
{
    global $new_whitelist_options;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '3.0.0', 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', sprintf(__('The "%s" options group has been removed. Use another settings group.'), 'privacy'));
        $option_group = 'reading';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options[$option_group]);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ($sanitize_callback != '') {
        remove_filter("sanitize_option_{$option_name}", $sanitize_callback);
    }
}

WordPress Version: 4.3

/**
 * Unregister a setting
 *
 * @since 2.7.0
 *
 * @global array $new_whitelist_options
 *
 * @param string   $option_group
 * @param string   $option_name
 * @param callable $sanitize_callback
 */
function unregister_setting($option_group, $option_name, $sanitize_callback = '')
{
    global $new_whitelist_options;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '3.0', 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', sprintf(__('The "%s" options group has been removed. Use another settings group.'), 'privacy'));
        $option_group = 'reading';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options[$option_group]);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ($sanitize_callback != '') {
        remove_filter("sanitize_option_{$option_name}", $sanitize_callback);
    }
}

WordPress Version: 4.1

/**
 * Unregister a setting
 *
 * @since 2.7.0
 *
 * @param string   $option_group
 * @param string   $option_name
 * @param callable $sanitize_callback
 */
function unregister_setting($option_group, $option_name, $sanitize_callback = '')
{
    global $new_whitelist_options;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '3.0', 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', sprintf(__('The "%s" options group has been removed. Use another settings group.'), 'privacy'));
        $option_group = 'reading';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ($sanitize_callback != '') {
        remove_filter("sanitize_option_{$option_name}", $sanitize_callback);
    }
}

WordPress Version: 3.7

/**
 * Unregister a setting
 *
 * @since 2.7.0
 *
 * @param unknown_type $option_group
 * @param unknown_type $option_name
 * @param unknown_type $sanitize_callback
 * @return unknown
 */
function unregister_setting($option_group, $option_name, $sanitize_callback = '')
{
    global $new_whitelist_options;
    if ('misc' == $option_group) {
        _deprecated_argument(__FUNCTION__, '3.0', 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', sprintf(__('The "%s" options group has been removed. Use another settings group.'), 'privacy'));
        $option_group = 'reading';
    }
    $pos = array_search($option_name, (array) $new_whitelist_options);
    if ($pos !== false) {
        unset($new_whitelist_options[$option_group][$pos]);
    }
    if ($sanitize_callback != '') {
        remove_filter("sanitize_option_{$option_name}", $sanitize_callback);
    }
}