sanitize_text_field() — Sanitizar entradas do usuário
Causa
Armazenar input do usuário sem sanitização permite injeção de código malicioso (XSS, SQL Injection) que pode comprometer o site e os dados dos usuários.
Como resolver
Use a função de sanitização correta para cada tipo de dado. sanitize_text_field para texto simples, sanitize_email para e-mails, sanitize_url para URLs, wp_kses_post para HTML controlado.
PHP
<?php
// Mapa de sanitização por tipo de dado
function meu_plugin_sanitizar_dados(array $dados): array
{
return [
// Texto simples (remove HTML e espaços extras)
'nome' => sanitize_text_field(wp_unslash($dados['nome'] ?? '')),
// Textarea (permite quebras de linha, sem HTML)
'bio' => sanitize_textarea_field(wp_unslash($dados['bio'] ?? '')),
// E-mail
'email' => sanitize_email($dados['email'] ?? ''),
// URL
'website' => esc_url_raw($dados['website'] ?? ''),
// Inteiro
'idade' => absint($dados['idade'] ?? 0),
// Float
'preco' => (float) filter_var($dados['preco'] ?? 0, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
// HTML limitado (permite b, i, em, strong, a)
'descricao' => wp_kses($dados['descricao'] ?? '', [
'a' => ['href' => [], 'title' => []],
'b' => [],
'strong' => [],
'em' => [],
'i' => [],
]),
// Slug/chave
'slug' => sanitize_key($dados['slug'] ?? ''),
];
}