Soll ich WordPress-Funktionen wie the_title, the_excerpt, the_content entkommen

15

Ich habe mir den Code angesehen, aber ich konnte nicht feststellen, dass Funktionen wie the_title the_content the_excerptusw. fehlten . Ich habe ihn möglicherweise nicht richtig gelesen. Muss ich diesen Funktionen bei der Theme-Entwicklung entkommen, wie zum Beispiel:

esc_html ( the_title () )

Bearbeiten: Wie in den Antworten unten ausgeführt, ist der obige Code ungeachtet dessen falsch - der Code sollte gelesen haben esc_html ( get_the_title () )

Byronyasgur
quelle
Nein, diese Funktionen sind bereits bereinigt, daher ist dies nicht erforderlich. Außer bei the_contentwelchen Ausgaben HTML aus dem TinyMCE-Editor, in den Sie eingeben. Dies ist eher für Formulareingaben oder Daten reserviert, die am Frontend beispielsweise von Ihren Benutzern erstellt wurden.
Adam

Antworten:

15

Das Escaping hängt ganz vom Kontext ab, in dem Sie die Funktionen verwenden. Was für die Anzeige in <h1>Tags sicher ist, ist für das valueAttribut eines Eingabefelds nicht unbedingt sicher , und selbst das wäre als hrefAttributwert nicht unbedingt sicher .

Kurz gesagt: Führen Sie die Desinfektion selbst durch, während Sie sie ausgeben. Obwohl im Fall the_title ()oder get_the_title (), esc_htmlist nicht notwendig, da Wordpress die folgenden Funktionen gilt:

Hinweis: the_title druckt den Titel - esc_html ( the_title () )funktioniert also nicht. Ebenso wird the_contentder Inhalt gedruckt (in jedem Fall wird erwartet, dass der Inhalt HTML anzeigt).

Stephen Harris
quelle
oops silly me ... ja natürlich wird esc_html (the_title ()) nicht funktionieren. Danke für deine Antwort.
Byronyasgur
4
Verwandt: um den Post-Titel in einem HTML- Attribut auszugeben , verwenden Siethe_title_attribute()
Chip Bennett
6

Ja und Nein - hängt davon ab, ob HTML in diesen Funktionen ausgegeben werden soll oder nicht. Wenn Sie beispielsweise einen Escape- Befehl ausführen the_content()und dieser einen <div>Tag enthält , wird dieser Tag tatsächlich als auf der Seite ausgegeben &lt;div&gt;.

Übrigens, wenn Sie die Ausgabe dieser Funktionen umgehen, möchten Sie deren "get_" -Äquivalente (z. get_the_content()B.) verwenden, da diese Funktionen ihre Ausgabe direkt wiedergeben.

Joseph Leedy
quelle
0

Sie können einfach eine Funktion wie diese schreiben und sie mit dem Titelfilter verknüpfen :

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