unregister_setting() WP 2.7.0

Дозволяє скасувати зареєстровані налаштування (опції). Найчастіше використовується з функцією деактивації плагіна: register_deactivation_hook() .

unregister_setting() – одна з функцій API налаштувань .

Хуки з функції

Повертає

null. Нічого не вертає.

Використання

unregister_setting( $option_group, $option_name, $deprecated );
$option_group
(рядок) (обов’язковий)
Назва групи, до якої належить опція. Вказується при реєстрації в параметрі $option_group


register_setting( $option_group, $option_name, $sanitize_callback ) .
$option_name
(рядок) (обов’язковий)
Назва опції, яку потрібно скасувати.
$deprecated
(рядок)

Заборонено з версії 4.7. Тепер використовується callback із функції register_setting() .

Назва функції, яка обробляє значення опції перед збереженням.
За замовчуванням: ”

Приклади

0

#1 Припустимо, ми зареєстрували опцію і тепер нам потрібно її скасувати:

// Реєстрація нової опції
function eg_settings_api_init() {  
	// Додаємо блок опцій на базову сторінку опцій "Читання"  
	add_settings_section(  
		'eg_setting_section', // секція  
		'Заголовок для секції налаштувань',  
		'eg_setting_section_callback_function',  
		'reading' // сторінка  
	);  

	// Додаємо поля опцій. Вказуємо назву, опис,   
	// функцію виводить html код поля опції.  
	add_settings_field(  
		'eg_setting_name',  
		'Опис поля опції',  
		'eg_setting_callback_function', // можна вказати ''  
		'reading', // сторінка  
		'eg_setting_section' // секція  
	);

	// Реєструємо опції, щоб вони зберігалися під час відправлення     
	register_setting('reading', 'eg_setting_name');  
}  
add_action( 'admin_init', 'eg_settings_api_init');  

...

// Тепер, десь далі по скрипту, нам знадобилося скасувати опцію "eg_setting_name". Скасовуємо:
unregister_setting( 'reading', "eg_setting_name");

нотатки

  • Global. Масив. $new_allowed_options
  • Global. Масив. $wp_registered_settings

список змін

З версії 2.7.0Введено.
З версії 4.7.0$sanitize_callback був deprecated. callback from register_setting() now used instead.
З версії 5.5.0$new_whitelist_options був renamed to $new_allowed_options . Please consider writing more inclusive code.

Код unregister_setting() WP 6.0.2

function unregister_setting( $option_group, $option_name, $deprecated = '' ) {
	Global $new_allowed_options, $wp_registered_settings;

	/*
	 * В 5.5.0, the $new_whitelist_options global variable був 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 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 був проведений під час 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 ] );
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *