unregister_setting( string $option_group, string $option_name, callable $deprecated = '' )

Unregisters a setting.

Parameters

$option_groupstringrequired
The settings group name used during registration.
$option_namestringrequired
The name of the option to unregister.
$deprecatedcallableoptional
Deprecated.

Default:''

Source


	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;
}

/**
 * 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 ) {

Changelog

VersionDescription
5.5.0$new_whitelist_options was renamed to $new_allowed_options.
Please consider writing more inclusive code.
4.7.0$sanitize_callback was deprecated. The callback from register_setting() is now used instead.
2.7.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    In WordPress, the unregister_setting function is used to remove a previously registered setting from the settings API. Here’s an example of how you might use it:

    Let’s say you’ve previously registered a setting using the register_setting function:

    function wpdocs_register_settings() {
        register_setting( 'wpdocs_options_group', 'wpdocs_setting' );
    }
    add_action( 'admin_init', 'wpdocs_register_settings' );

    Now, if you want to unregister this setting, you can use the unregister_setting function:

    function wpdocs_unregister_settings() {
        unregister_setting( 'wpdocs_options_group', 'wpdocs_setting' );
    }
    add_action( 'admin_init', 'wpdocs_unregister_settings' );

You must log in before being able to contribute a note or feedback.