Функция sanitize_post_field()
используется для очистки определенного поля поста, основываясь на контексте его использования. Это важно для обеспечения безопасности данных, получаемых от пользователей или из базы данных, перед их выводом или сохранением.
sanitize_post_field( string $field, mixed $value, int $post_id, string $context = ‘display’ ): mixed
Параметры функции
- $field (строка, обязательный): Имя поля объекта поста, которое необходимо очистить. Примеры:
post_title
,post_content
,post_excerpt
и другие. - $value (смешанный, обязательный): Значение, которое будет очищено.
- $post_id (число, обязательный): Идентификатор поста, к которому относится поле.
- $context (строка, необязательный): Контекст, в котором будет использоваться очищенное значение. Возможные значения:
raw
: для использования в строке.edit
: для дальнейшего редактирования.db
: для использования в запросе к базе данных.display
: для вывода на экран (по умолчанию).attribute
: для использования в атрибуте HTML.js
: для использования в JavaScript.
Возвращаемое значение
Функция возвращает очищенное значение указанного поля поста.
Пример 1: Очистка заголовка поста для вывода на экран
Этот пример демонстрирует, как очистить заголовок поста перед его выводом:
$post = get_post(45); // Получаем пост с ID 45
$post_title = sanitize_post_field('post_title', $post->post_title, $post->ID, 'display');
echo $post_title; // Вывод очищенного заголовка
В этом случае функция удаляет нежелательные HTML-теги и символы, чтобы заголовок отображался безопасно.
Пример 2: Очистка заголовка для использования в атрибуте
Если нужно использовать значение поля в атрибуте HTML-тега, можно сделать так:
<?php
$post = get_post(78); // Получаем пост с ID 78
$post_title = sanitize_post_field('post_title', $post->post_title, $post->ID, 'attribute');
?>
<input type="hidden" name="post-title" value="<?= esc_attr($post_title) ?>" />
Здесь значение очищается так, чтобы его можно было безопасно использовать в скрытом поле формы.
Пример 3: Очистка содержимого поста для хранения в базе данных
Когда вы сохраняете содержимое поста в базе данных, полезно очищать его:
$post_content = $_POST['content']; // Получаем содержимое из формы
$sanitized_content = sanitize_post_field('post_content', $post_content, $post_id, 'db');
Функция очистит содержимое, удалив лишние символы и теги перед сохранением в базу данных.
Пример 4: Проверка доступных полей поста
Вот список полей, которые можно использовать с этой функцией:
- ID
- post_author
- post_date
- post_date_gmt
- post_content
- post_title
- post_excerpt
- post_status
- comment_status
- ping_status
- post_password
- post_name
- to_ping
- pinged
- post_modified
- post_modified_gmt
- post_content_filtered
- post_parent
- guid
- menu_order
- post_type
- post_mime_type
- comment_count
Пример использования с полем post_excerpt
:
$post = get_post(90); // Получаем пост с ID 90
$post_excerpt = sanitize_post_field('post_excerpt', $post->post_excerpt, $post->ID, 'display');
echo $post_excerpt; // Вывод очищенного отрезка
Заключение
Функция sanitize_post_field()
является важным инструментом для обеспечения безопасности данных в WordPress. Она позволяет эффективно очищать поля поста в зависимости от контекста, что делает её незаменимой при работе с пользовательским вводом и постами. Использование этой функции помогает предотвратить потенциальные уязвимости и обеспечивает корректное отображение данных.