Функция SANITIZE_POST_FIELD() в WordPress: обзор и примеры использования

## Функция 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(): Очищает текстовое поле.

Эти функции помогают гарантировать безопасность и корректность вводимых данных.

Leave a Reply

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