Você está em boa companhia com suporte incrível 🤝

sanitize_text_field() vs esc_html(): sanitizar na entrada, escapar na saída

Time Full Services Time Full Services
Nome do erro sanitize_text_field() vs esc_html(): sanitizar na entrada, escapar na saída
Severidade Atenção
Desde WordPress 2.8
Descrição Diferença prática entre limpar dados antes de salvar e escapar dados antes de exibir no HTML.

Diferença prática entre limpar dados antes de salvar e escapar dados antes de exibir no HTML.

Causa

Confundir as duas funções — ou usar apenas uma delas — é uma das causas mais comuns de XSS e de perda de formatação em campos do WordPress.

Como resolver

Use funções sanitize_* ao processar a entrada do usuário (antes de salvar no banco) e funções esc_* ao montar a saída em HTML (no momento de exibir), sem pular nenhuma das duas etapas.

PHP
// Ao salvar (entrada)
$titulo = sanitize_text_field( wp_unslash( $_POST['titulo'] ?? '' ) );
update_post_meta( $post_id, 'titulo_personalizado', $titulo );

// Ao exibir (saída)
echo '<h2>' . esc_html( get_post_meta( $post_id, 'titulo_personalizado', true ) ) . '</h2>';

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →