WordPress как на ладони
wordpress jino

unregister_setting() WP 2.7

Позволяет отменить зарегистрированные ранее настройки (опции). Чаще всего используется с функцией деактивации плагина: register_deactivation_hook().

unregister_setting() - одна из функций API настроек.

Хуков нет.

Возвращает

Ничего не возвращает.

Использование

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().

Название функции, которая обрабатывает значение опции перед сохранением.
По умолчанию: ''

Примеры

#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" );

Код unregister setting: wp-includes/option.php WP 4.8.2

<?php
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 ] );
	}
}

Cвязанные функции

Из раздела: API Настроек

unregister_setting Комментариев нет

Здравствуйте, !

Ваш комментарий