Функция sanitize_option(): зачем и как использовать в WordPress

## Функция 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. Правильное использование этой функции поможет избежать проблем с безопасностью и совместимостью.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *