## Функция sanitize_option()
Функция sanitize_option используется для очистки различных значений опций в WordPress. Она отвечает за проверку и корректировку информации, чтобы обеспечить её правильный формат и безопасность.
### Зачем нужна эта функция?
Функция работает как переключатель, который передаёт заданное значение через несколько функций в зависимости от имени опции. Это помогает избежать ошибок и несанкционированного доступа к данным.
### Подключаемые хуки
- sanitize_option_(option) - хук для изменения значения после его оч��стки.
### Возвращаемое значение
Функция возвращает очищенное значение опции, которое может быть любого типа.
### Как использовать?
```php
sanitize_option( $option, $value );
$option(string) (обязательный) — имя опции, которую нужно очистить.$value(mixed) (обязательный) — значение опции до очистки.
Примеры использования
Вот несколько примеров того, как работает эта функция:
echo sanitize_option( 'admin_email', 'admin @ gmail.com' ); // [email protected]
echo sanitize_option( 'thumbnail_size_w', '25px' ); // 25
echo sanitize_option( 'posts_per_page', '-1' ); // -1
echo sanitize_option( 'blogname', 'My super blog' ); // My super blog
echo sanitize_option( 'blog_charset', 'utf 8' ); // utf8
Примечания
- Функция использует объект базы данных WordPress
$wpdb.
История изменений
- Добавлена в версии 2.0.5.
Код функции
Вот как выглядит код функции sanitize_option:
function sanitize_option( $option, $value ) {
global $wpdb;
$original_value = $value;
$error = null;
switch ( $option ) {
case 'admin_email':
case 'new_admin_email':
$value = $wpdb->strip_invalid_text_for_column( $wpdb->options, 'option_value', $value );
if ( is_wp_error( $value ) ) {
$error = $value->get_error_message();
} else {
$value = sanitize_email( $value );
if ( ! is_email( $value ) ) {
$error = __( 'Введенный адрес электронной почты не является действительным. Пожалуйста, введите правильный адрес электронной почты.' );
}
}
break;
// Другие случаи...
case 'blog_charset':
if ( is_string( $value ) ) {
$value = preg_replace( '/[^a-zA-Z0-9_-]/', '', $value ); // Убирает недопустимые символы.
} else {
$value = '';
}
break;
// Код продолжается...
}
if ( null !== $error ) {
if ( '' === $error && is_wp_error( $value ) ) {
$error = sprintf( __( 'Не удалось очистить опцию %1$s. Код ошибки: %2$s' ), $option, $value->get_error_code() );
}
$value = get_option( $option );
if ( function_exists( 'add_settings_error' ) ) {
add_settings_error( $option, "invalid_{$option}", $error );
}
}
return apply_filters( "sanitize_option_{$option}", $value, $option, $original_value );
}
Связанные функции
Функции для очистки значений, аналогичные sanitize_option, включают:
sanitize_email()- очистка email-адресов.sanitize_file_name()- очистка имён файлов.sanitize_text_field()- очистка текстовых полей.
Заключение
Функция sanitize_option является важным инструментом для защиты и управления данными в WordPress. Правильное использование этой функции поможет избежать проблем с безопасностью и совместимостью.