Первый. Предполагая, что $_POST['enablog_post_options']
- это массив, он должен быть дезинфицирован как массив, итерации каждого элемента в цикле. Не как строка, все элементы сразу.
Итак, найдите в своем массиве enablog_post_options
и определите для каждого элемента зависящий от типа данных технический вопрос sanitizaion. WP Codex может помочь , начинающийся с этим.
Теперь. Как вы понимаете, какие типы данных вы действительно собираетесь санировать, я подозреваю, что стоит упомянуть встроенные средства дезинфекции update_post_meta()
& пользовательских фильтров, которые вы можете подключить к этой функции.
Итак, любой может найти код функции update_metadata()
, который делает тяжелую работу для update_post_meta()
here in the Core Metadata API source code.
Но то время, он дезинфицирует:
- мета ключ с
sanitize_key()
и wp_unslash()
;
- meta value
wp_unslash()
и sanitize_meta()
(больше пояснение на этот следующий).
- база данных сохранить запрос с
wpdb::prepare()
, вызванный от update_metadata()
->wpdb::update()
;
Санитировать с sanitize_meta()
.
Удобный способ дополнительной дезинфекции метаданных [обычай] отправляется через sanitize_meta()
. update_metadata()
уже подключает потенциально существующий настраиваемый фильтр санитарии, который вы должны создать в процессе дезактивации метаинформации.Это делается через sanitize_meta()
.
Он вызывается из update_metadata()
, как это со всеми после мета параметрами:
$meta_value = sanitize_meta($meta_key, $meta_value, $meta_type);
Таким образом, вы можете просто сделать заказ санитарную обработку фильтра для работы с почтовой мета, как это (пример из WP Кодекса sanitize_meta()
описание , ссылка выше):
// --- sanitize_meta() call is commented out because it is called from update_metadata()
// $clean_value = sanitize_meta('birth-year', $user_input, 'user');
function sanitize_birth_year_meta($year) {
$now = date('Y');
$then = $now - 115; // No users older than 115.
if ($then > $year || $year > $now) {
wp_die('Invalid entry, go back and try again.');
}
return $year;
}
add_filter('sanitize_user_meta_birth-year', 'sanitize_birth_year_meta');
Продолжая с некоторыми imagnary кода, в sanitize_birth_year_meta()
вместо $year
вы получите $data
содержание, чтобы получить санируется при вызове фильтра.
Sanitize_text_field повреждает весь мой код (все флажки отмечены, когда я сохраняю сообщение), IMHO мне нужно больше, чем просто sanitize_text_field, потому что $ _POST ['enablog_post_options'] имеет флажки, текстовые поля и многое другое. – Netshad