Санітизация цілочисельного введення для update_post_meta
При оновленні post meta, де введення завжди буде цілим числом, чи варто використовувати (int)
чи є спеціальна функція WordPress для цього (наприклад, sanitize_text_field
)?
Наприклад:
if(isset($_POST['category_id'])){
update_post_meta($post->ID, 'category_id', (int)($_POST['category_id']));
}

Для целых чисел KSES не имеет специальной функции.
Используйте (int)
, intval()
или absint()
Подробнее: Валидация данных - Целые числа

// Приведение пользовательского ввода к целочисленному значению
&safe_id = intval( $_POST['category_id'] );
// Проверка на нулевое значение
if ( ! $safe_id ) {
$safe_id = '';
}
// Обновление метаполя поста с безопасным значением
update_post_meta( $post->ID, 'category_id', $safe_id );
Функция intval() преобразует пользовательский ввод в целое число, возвращая ноль для нечисловых значений. Затем мы проверяем, не оказалось ли значение нулевым. Если так, мы сохраняем пустое значение в базе данных. В противном случае сохраняется правильно валидированный category_id.

Используйте условное выражение для проверки, является ли $_POST['category_id'])
целым числом. В PHP для этого есть функция is_int()
1
if(isset($_POST['category_id']) && is_int($_POST['category_id'])){
update_post_meta($post->ID, 'category_id', $_POST['category_id']);
}
Также следует обрезать пробельные символы в данных $_POST, так как is_int()
вернет false, если строка содержит пробелы2.
