sanitize_option()

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Очищает значение опции в зависимости от того, что это за опция.

Подробнее – в правилах очистки.

Функция (логично предположить) возвращает очищенное значение. Если с очисткой что-то пошло не так, то регистрирует соответствующую ошибку для отображения на страницах настроек в админке функцией add_settings_error().

sanitize_option( $option, $value )

Параметры

$option
(строка) Ключ очищаемой опции. Для стандартных опций действуют особые правила очистки, полный список опций с описаниями тут, описания правил чуть ниже.
$option
Очищаемое значение.

Правила очистки

Итак, прежде всего, если в качестве значения параметра $option вы передали ключ, который не присутствует в данной таблице, то с его значением ничего происходить не будет, разве что оно будет пропущено через хук sanitize_option_{$option}

Кроме того, каждое из этих значение будет проверено на то, не содержит ли оно запрещённых символов для колонки option_value в базе данных.

Примеры

Сама по себе функция sanitize_option() по большей части используется именно в ядре WordPress и нужна при очистки значений стандартных опций.

Я конечно могу показать вам пример наподобие этого:

echo sanitize_option( 'thumbnail_size_w', '150px' ); // 150

… но его практическое применение без контекста может быть не совсем понятно.

Другие дело, если мы попробуем навесить свой фильтр на эту опцию.

Хуки

sanitize_option_{$option}

Перед тем, как функция возвращает значение, к нему применяется фильтр-хук:

apply_filters( "sanitize_option_{$option}", $value, $option, $original_value );

Благодаря ему мы создать своё собственное правило очистки для любой опции. Давайте это и сделаем.

Предположим, что у нас на сайте есть опция с ключом true_slider_height, которая задаёт высоту в пикселях для какого-то слайдера, скажем.

Создадим правило очистки!

add_filter( 'sanitize_option_true_slider_height', 'true_slide_height_sanitize', 25, 3 );
 
function true_slide_height_sanitize( $value, $option, $original_value ) {
 
	// $original_value – это значение вообще без очистки
	// $value – это значение, которое уже могло бы быть очищено до того, как дело дошло до фильтра
 
	// так как название опции и так есть в названии фильтра, то условие не обязательно
	// if( 'true_slider_height' === $option ) {
 
	$value = absint( $value );
	return $value;
 
}

Готово! Теперь, когда ваша опция будет обновляться функцией update_option() или добавляться функцией add_option(), её значение автоматически будет очищаться по этому правилу.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии