Очищает значение опции в зависимости от того, что это за опция.
Подробнее – в правилах очистки.
Функция (логично предположить) возвращает очищенное значение. Если с очисткой что-то пошло не так, то регистрирует соответствующую ошибку для отображения на страницах настроек в админке функцией add_settings_error().
sanitize_option( $option, $value )
Итак, прежде всего, если в качестве значения параметра $option вы передали ключ, который не присутствует в данной таблице, то с его значением ничего происходить не будет, разве что оно будет пропущено через хук sanitize_option_{$option}
| Название опции | Как очищается | 
|---|---|
| admin_email,new_admin_email | Сначала очищается функцией sanitize_email(), затем проверяется на корректность функцией is_email(). | 
| thumbnail_size_w,thumbnail_size_h,medium_size_w,medium_size_h,medium_large_size_w,medium_large_size_h,large_size_w,large_size_h,mailserver_port,comment_max_links,page_on_front,page_for_posts,rss_excerpt_length,default_category,default_email_category,default_link_category,close_comments_days_old,comments_per_page,thread_comments_depth,users_can_register,start_of_week,site_icon | Очищается как целое неотрицательное значение функцией absint(). | 
| posts_per_rss,posts_per_page | Очищается как целое положительное, но с возможностью принимать значение -1. Если не существует или равно нулю, то принимает значение по умолчанию1. | 
| default_ping_status,default_comment_status | Если равно пустой строке или нулю, устанавливается в значение closed. | 
| blogdescription,blogname | Экранируется HTML функцией esc_html(). | 
| blog_charset | Удаляет все символы кроме a-zA-Z0-9_- | 
| blog_public | Очищается как целое число, если равно null, то устаналивается в значение1. | 
| date_format,time_format,mailserver_url,mailserver_login,mailserver_pass,upload_path | Удаляются HTML-теги функцией strip_tags(). | 
| ping_sites | Из каждого значения удаляются лишние пробелы на концах плюс очистка функцией esc_url_raw(). | 
| gmt_offset | Удаляет все символы кроме 0-9:.- | 
| siteurl,home | Проверяет, что указан URL. Если да, очистка esc_url_raw(). | 
| WPLANG | Проверяет, что значение находится в массиве доступных get_available_languages() | 
| illegal_names | Из каждого значения удаляются лишние пробелы на концах. | 
| limited_email_domains,banned_email_domains | Удаляет пробелы на концах плюс проверяет корректность каждого значения. | 
| timezone_string | Проверяет, что значение не пустое и находится в массиве доступных timezone_identifiers_list() | 
| permalink_structure,category_base,tag_base | Очистка функцией esc_url_raw(), затем удаляет вхождения http://, если они присутствуют.permalink_structureтакже проверяется по регулярному выражению/%[^\/%]+%/ | 
| default_role | Если указанной роли не существует, то установит значение по умолчанию subscriber. | 
| moderation_keys,disallowed_keys | Очищает пробелы на концах у каждого значения. | 
Кроме того, каждое из этих значение будет проверено на то, не содержит ли оно запрещённых символов для колонки option_value в базе данных.
Сама по себе функция sanitize_option() по большей части используется именно в ядре WordPress и нужна при очистки значений стандартных опций.
Я конечно могу показать вам пример наподобие этого:
echo sanitize_option( 'thumbnail_size_w', '150px' ); // 150
… но его практическое применение без контекста может быть не совсем понятно.
Другие дело, если мы попробуем навесить свой фильтр на эту опцию.
Перед тем, как функция возвращает значение, к нему применяется фильтр-хук:
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(), её значение автоматически будет очищаться по этому правилу.
На всякий случай, если вдруг вы не знакомы с механизмом фильтров в WordPress, вот вам ссылка на видеоурок.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.