web-dev-qa-db-fra.com

Devrais-je échapper à des fonctions wordpress comme the_title, the_excerpt, the_content

J'avais jeté un œil au code, mais je ne pouvais pas voir d'échappatoire sur des fonctions comme the_titlethe_contentthe_excerptetc. Je pourrais ne pas le lire correctement. Dois-je échapper à ces fonctions dans le développement de thèmes comme:

esc_html ( the_title () )

Edit: comme indiqué dans les réponses ci-dessous, le code ci-dessus est faux, le code aurait dû se lire esc_html ( get_the_title () )

14
byronyasgur

Echapper dépend entièrement du contexte dans lequel vous utilisez les fonctions. Ce qui est sûr pour l'affichage à l'intérieur des balises <h1>, ne l'est pas forcément pour l'attribut value d'un champ de saisie, et même cela ne serait pas nécessairement sûr en tant que valeur d'attribut href ....

En bref, effectuez vous-même la désinfection au fur et à mesure que vous la sortez. Cependant, dans le cas de the_title () ou get_the_title (), esc_html n'est pas nécessaire, car WordPress applique les fonctions suivantes:

Remarque: the_title imprime le titre - donc esc_html ( the_title () ) ne fonctionnera pas. De même, the_content imprime le contenu (dans tous les cas, vous vous attendriez à ce qu'il affiche du code HTML).

14
Stephen Harris

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

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

6
Joseph Leedy

Vous pouvez simplement écrire une fonction comme celle-ci et la raccorder à the_title filter:

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