esc_html()escapa uma string para que não seja analisada como HTML. Caracteres como <são convertidos em <, por exemplo. Isso parecerá o mesmo para o leitor, mas significa que, se o valor que está sendo produzido for <script>, ele não será interpretado pelo navegador como uma tag de script real.
Use esta função sempre que o valor que está sendo produzido não deva conter HTML.
esc_attr()escapa uma string para que seja seguro usá-lo em um atributo HTML, como class=""por exemplo. Isso evita que um valor se quebre do atributo HTML. Por exemplo, se o valor for "><script>alert();</script>e você tentar produzi-lo em um atributo HTML, ele fechará a tag HTML atual e abrirá uma tag de script. Isso não é seguro. Ao escapar do valor, não será possível fechar o atributo HTML, marcar e gerar HTML inseguro.
Use esta função ao gerar um valor dentro de um atributo HTML.
esc_url() escapa uma string para garantir que seja um URL válido.
Use esta função ao gerar um valor dentro de um atributo href=""ou src="".
esc_textarea()escapa um valor para que seja seguro usá-lo em um <textarea>elemento. Ao escapar de um valor com essa função, ele impede que um valor que está sendo produzido dentro <textarea<de a feche o <textarea>elemento e produza seu próprio HTML.
Use esta função ao gerar um valor dentro de um <textarea>elemento.
esc_html()e esc_attr()também tem versões terminadas em __(), _e()e _x(). Estes são para saída de strings traduzíveis.
WordPress tem funções, __(), _e()e _x(), para a saída de texto que pode ser traduzido. __() retorna uma sequência traduzível, _e() ecoa uma sequência traduzível e _x()retorna uma sequência traduzível com um determinado contexto. Você provavelmente já os viu antes.
Como você não pode necessariamente confiar que um arquivo de conversão contenha valores seguros, o uso dessas funções ao gerar uma sequência traduzível garante que as sequências que estão sendo produzidas não possam causar o mesmo problema descrito acima.
Use essas funções ao emitir strings traduzíveis.