Dovrei sfuggire a wordpress come the_title, the_excerpt, the_content


15

Ho guardato il codice ma non sono riuscito a scappare da funzioni come the_title the_content the_excerptecc. Potrei non leggerlo nel modo giusto. Devo sfuggire a queste funzioni nello sviluppo di temi come:

esc_html ( the_title () )

Modifica: come sottolineato nelle risposte sotto il codice sopra è sbagliato a prescindere - il codice avrebbe dovuto leggere esc_html ( get_the_title () )


No, queste funzioni sono già igienizzate, quindi non è necessario farlo. Tranne nel caso in the_contentcui output HTML dall'editor TinyMCE, in cui si inserisce. Questo è più riservato agli input del modulo o ai dati creati sul front-end, ad esempio dagli utenti.
Adam,

Risposte:


15

L'escaping dipende interamente dal contesto in cui si stanno utilizzando le funzioni. Ciò che è sicuro per la visualizzazione all'interno dei <h1>tag, non è necessariamente sicuro per l' valueattributo di un campo di input, e anche questo non sarebbe necessariamente sicuro come hrefvalore dell'attributo ....

In breve: esegui tu stesso la sanificazione mentre la produci. Anche se nel caso di the_title ()o get_the_title (), esc_htmlnon è necessario, poiché WordPress applica le seguenti funzioni:

Nota: the_title stampa il titolo, quindi esc_html ( the_title () )non funzionerà. Allo stesso modo, the_contentstampa il contenuto (in ogni caso, ti aspetteresti che il contenuto visualizzi HTML).


oops stupidami ... sì ovviamente esc_html (the_title ()) non funzionerà. Grazie per la tua risposta.
byronyasgur,

4
Correlato: per generare il titolo del post in un attributo HTML , utilizzarethe_title_attribute()
Chip Bennett

6

Sì e no - dipende dal fatto che si desidera che l'html in quelle funzioni venga emesso o meno. Se fuggi the_content(), ad esempio, e contiene un <div>tag, quel tag verrebbe effettivamente emesso sulla pagina come &lt;div&gt;invece.

A proposito, se sfuggi all'output di quelle funzioni, ti consigliamo di utilizzare i loro equivalenti "get_" (es. get_the_content()) Poiché tali funzioni fanno eco direttamente al loro output.


0

Puoi semplicemente scrivere una funzione come questa e agganciarla al filtro_titolo :

function my_escape_title( $title ){
    return esc_html( $title );
}
add_filter( 'the_title', 'my_escape_title' );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.