Devo escapar de funções wordpress como the_title, the_excerpt, the_content

15

Eu tinha olhado para o código, mas não consegui ver nenhum escape de funções como the_title the_content the_excerptetc. Talvez eu não esteja lendo direito. Preciso escapar dessas funções no desenvolvimento de temas como:

esc_html ( the_title () )

Editar: conforme indicado nas respostas abaixo, o código acima está errado, independentemente - o código deve ter lido esc_html ( get_the_title () )

byronyasgur
fonte
Não, essas funções já estão higienizadas, portanto, não é necessário fazê-lo. Exceto no caso em the_contentque gera HTML do editor TinyMCE, no qual você insere. Isso é mais reservado para entradas de formulário ou dados criados no front end, por exemplo, por seus usuários.
18712 Adam

Respostas:

15

Escapar depende inteiramente do contexto em que você está usando as funções. O que é seguro para exibir <h1>tags internas , não é necessariamente seguro para exibir o valueatributo de um campo de entrada, e mesmo isso não seria necessariamente seguro como um hrefvalor de atributo ....

Em resumo - faça você mesmo a higienização enquanto a produz. Embora no caso de the_title ()ou get_the_title (), esc_htmlnão seja necessário, pois o WordPress aplica as seguintes funções:

Nota: the_title imprime o título - portanto esc_html ( the_title () ), não funciona. Da mesma forma, the_contentimprime o conteúdo (em qualquer caso, você esperaria que o conteúdo exibisse HTML).

Stephen Harris
fonte
oops bobo me ... sim, claro, esc_html (the_title ()) não funcionará. Obrigado pela sua resposta.
Byronyasgur
4
Relacionados: a saída Título da mensagem em uma HTML atributo , usothe_title_attribute()
Chip Bennett
6

Sim e não - depende se você deseja que o html nessas funções seja gerado ou não. Se você escapar the_content(), por exemplo, e ele contiver uma <div>tag, essa tag será realmente enviada para a página &lt;div&gt;.

A propósito, se você escapar da saída dessas funções, deverá usar os equivalentes "get_" (ex. get_the_content()), Pois essas funções ecoam diretamente a saída.

Joseph Leedy
fonte
0

Você pode simplesmente escrever uma função como esta e conectá-la ao filtro_título :

function my_escape_title( $title ){
    return esc_html( $title );
}
add_filter( 'the_title', 'my_escape_title' );
Vilius
fonte