## Функция SANITIZE_POST_FIELD() │ WP 2.3.0
Функция sanitize_post_field() очищает данные поста в зависимости от контекста.
### Возможные контексты
- **raw**: Необработанные данные.
- **edit**: Данные для редактирования.
- **db**: Данные для базы данных.
- **display**: Данные для отображения (используется по умолчанию).
- **attribute**: Данные для атрибута HTML.
- **js**: Данные для JavaScript.
### Применение
Эта функция обычно используется в таких функциях, как sanitize_post() и get_post_field().
### Хуки, связанные с функцией
При использовании sanitize_post_field() вы можете воспользоваться различными хуками. Вот некоторые из них:
- edit_post_title
- edit_post_content
- pre_post_title
- pre_post_content
### Возвращаемое значение
Функция возвращает очищенное значение, которое может иметь разный тип.
### Пример использования
Чтобы использовать sanitize_post_field(), вы можете обратиться к ней следующим образом:
```php
$post = get_post( 35 );
$post_title = sanitize_post_field( 'post_title', $post->post_title, $post->ID, 'display' );
echo $post_title;
Пример 1: Очищаем заголовок поста для отображения
$post = get_post( 35 );
$post_title = sanitize_post_field( 'post_title', $post->post_title, $post->ID, 'display' );
echo $post_title;
Пример 2: Очищаем данные для атрибута HTML
post_title, $post->ID, 'attribute' );
?>
Пример 3: Стандартные поля поста
Ниже приведен список стандартных полей поста, которые вы можете использовать:
| Поле |
|---|
| ID |
| post_author |
| post_date |
| post_content |
| post_title |
| post_excerpt |
| post_status |
| post_password |
| post_name |
| post_modified |
| post_type |
| comment_count |
Изменения
- С версии 2.3.0 функция была введена.
- С версии 4.4.0 контекст по умолчанию теперь 'display'.
Код функции для версии WP 6.7.2
function sanitize_post_field( $field, $value, $post_id, $context = 'display' ) {
$int_fields = array( 'ID', 'post_parent', 'menu_order' );
if ( in_array( $field, $int_fields, true ) ) {
$value = (int) $value;
}
// Обработка полей, содержащих массивы целых чисел.
$array_int_fields = array( 'ancestors' );
if ( in_array( $field, $array_int_fields, true ) ) {
$value = array_map( 'absint', $value );
return $value;
}
if ( 'raw' === $context ) {
return $value;
}
$prefixed = false;
if ( str_contains( $field, 'post_' ) ) {
$prefixed = true;
$field_no_prefix = str_replace( 'post_', '', $field );
}
// Дальнейшая обработка в зависимости от контекста...
// (Приведенный код для обработки контекста 'edit', 'db' и 'display' можно добавить здесь)
return $value;
}
Связанные функции
Функция sanitize_post_field() тесно связана с другими аналогичными функциями, такими как:
sanitize_email(): Очищает электронный адрес.sanitize_url(): Очищает URL-адрес.sanitize_text_field(): Очищает текстовое поле.
Эти функции помогают гарантировать безопасность и корректность вводимых данных.