¿Debo escapar de funciones de wordpress como the_title, the_excerpt, the_content

15

Había mirado el código pero no pude ver ningún escape en funciones como the_title the_content the_excerptetc. Puede que no lo esté leyendo bien. ¿Necesito escapar de estas funciones en el desarrollo de temas como:

esc_html ( the_title () )

Editar: como se señaló en las respuestas a continuación, el código anterior es incorrecto, independientemente de que el código debería haber leído esc_html ( get_the_title () )

byronyasgur
fuente
No, esas funciones ya están desinfectadas, por lo que no es necesario hacerlo. Excepto en el caso de the_contentque genera HTML desde el editor TinyMCE, en el que ingresa. Esto está más reservado para entradas de formulario o datos creados en el front-end, por ejemplo, por sus usuarios.
Adam

Respuestas:

15

Escapar depende completamente del contexto en el que está utilizando las funciones. Lo que es seguro para mostrar dentro de las <h1>etiquetas, no es necesariamente seguro para mostrar el valueatributo de un campo de entrada, e incluso eso no necesariamente sería seguro como un hrefvalor de atributo ...

En resumen: realice la desinfección usted mismo mientras la emite. Aunque en el caso de the_title ()o get_the_title (), esc_htmlno es necesario, ya que WordPress aplica las siguientes funciones:

Nota: the_title imprime el título, por esc_html ( the_title () )lo que no funcionará. Del mismo modo, the_contentimprime el contenido (en cualquier caso, esperaría que el contenido muestre HTML).

Stephen Harris
fuente
oops tonto yo ... sí, por supuesto esc_html (the_title ()) no funcionará. Gracias por tu respuesta.
byronyasgur
44
Relacionado: para generar el título de la publicación en un atributo HTML , usethe_title_attribute()
Chip Bennett
6

Sí y no: depende de si desea que se genere html en esas funciones o no. Si escapa the_content(), por ejemplo, y contiene una <div>etiqueta, esa etiqueta en realidad se enviará a la página &lt;div&gt;.

Por cierto, si escapas de la salida de esas funciones, querrás usar sus equivalentes "get_" (ej. get_the_content()) Ya que esas funciones hacen eco de su salida directamente.

Joseph Leedy
fuente
0

Simplemente puede escribir una función como esta y conectarla al filtro de título :

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