Очищает значение опции в зависимости от того, что это за опция.
Подробнее – в правилах очистки.
Функция (логично предположить) возвращает очищенное значение. Если с очисткой что-то пошло не так, то регистрирует соответствующую ошибку для отображения на страницах настроек в админке функцией 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(), её значение автоматически будет очищаться по этому правилу.