Dois-je échapper aux fonctions wordpress comme the_title, the_excerpt, the_content

15

J'avais regardé le code mais je ne pouvais pas voir d'échapper à des fonctions comme the_title the_content the_excerptetc. Je ne le lisais peut-être pas correctement. Dois-je échapper à ces fonctions dans le développement de thème comme:

esc_html ( the_title () )

Modifier: comme indiqué dans les réponses ci-dessous, le code ci-dessus est erroné malgré tout - le code devrait avoir lu esc_html ( get_the_title () )

byronyasgur
la source
Non, ces fonctions sont déjà nettoyées, il n'est donc pas nécessaire de le faire. Sauf dans le cas the_contentoù la sortie HTML de l'éditeur TinyMCE, dans laquelle vous entrez. Ceci est plus réservé aux entrées de formulaire ou aux données créées sur le front-end par exemple par vos utilisateurs.
Adam

Réponses:

15

L'échappement dépend entièrement du contexte dans lequel vous utilisez les fonctions. Ce qui est sûr pour l'affichage à l'intérieur des <h1>balises, n'est pas nécessairement sûr à afficher pour l' valueattribut d'un champ d'entrée, et même cela ne serait pas nécessairement sûr comme hrefvaleur d'attribut ....

En bref - effectuez vous-même la désinfection lors de sa sortie. Bien que dans le cas de the_title ()ou get_the_title (), ce esc_htmln'est pas nécessaire, car WordPress applique les fonctions suivantes:

Remarque: the_title imprime le titre - esc_html ( the_title () )ne fonctionnera donc pas. De même, the_contentimprime le contenu (dans tous les cas, vous vous attendez à ce que le contenu affiche du HTML).

Stephen Harris
la source
oups idiot moi ... oui bien sûr esc_html (the_title ()) ne fonctionnera pas. Merci pour votre réponse.
byronyasgur
4
Connexes: pour afficher le titre du message dans un attribut HTML , utilisezthe_title_attribute()
Chip Bennett
6

Oui et non - cela dépend si vous voulez que le HTML dans ces fonctions soit sorti ou non. Si vous vous échappez the_content(), par exemple, et qu'il contient une <div>balise, cette balise serait en fait sortie sur la page sous la forme &lt;div&gt;.

Par ailleurs, si vous échappez à la sortie de ces fonctions, vous voudrez utiliser leurs équivalents "get_" (ex. get_the_content()) Car ces fonctions font écho à leur sortie directement.

Joseph Leedy
la source
0

Vous pouvez simplement écrire une fonction comme celle-ci et la raccorder au filtre_titre :

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