esc_html() / esc_attr() / esc_url() — Escapar saída de dados
Causa
Exibir dados do banco de dados, URLs ou input do usuário diretamente sem escapar permite que código JavaScript malicioso seja executado no browser dos visitantes.
Como resolver
Use a função de escape correta para cada contexto: esc_html() para texto em HTML, esc_attr() para atributos, esc_url() para URLs, esc_js() para JavaScript, wp_json_encode() para JSON.
PHP
<?php
$nome = get_post_meta(get_the_ID(), '_nome_cliente', true);
$url = get_post_meta(get_the_ID(), '_url_perfil', true);
$classe = get_post_meta(get_the_ID(), '_classe_css', true);
$script = get_option('meu_plugin_ga_id');
// ✅ Escapar conforme o contexto de uso:
// Em conteúdo HTML
echo '<p>' . esc_html($nome) . '</p>';
// Em atributos HTML
echo '<input value="' . esc_attr($nome) . '">';
// Em URLs (href, src, action)
echo '<a href="' . esc_url($url) . '">' . esc_html($nome) . '</a>';
// Em class="" ou id=""
echo '<div class="' . esc_attr($classe) . '">';
// Em JavaScript inline
echo '<script>var nome = ' . wp_json_encode($nome) . ';</script>';
// Em atributo data-* com JSON
echo '<div data-config="' . esc_attr(wp_json_encode(['id' => get_the_ID()])) . '">';
// Para traduções escapadas (internacionalização + segurança)
echo '<p>' . esc_html__( 'Olá mundo', 'meu-plugin' ) . '</p>';