Spojrzałem na kod, ale nie widziałem ucieczki na funkcjach takich jak the_title
the_content
the_excerpt
itp. Być może nie czytałem go poprawnie. Czy muszę uciec od tych funkcji w tworzeniu motywu, takich jak:
esc_html ( the_title () )
Edycja: jak wskazano w odpowiedziach poniżej, powyższy kod jest niepoprawny niezależnie od tego - kod powinien zostać przeczytany
esc_html ( get_the_title () )
the_content
wyjściowe HTML pochodzi z edytora TinyMCE, w którym wprowadzasz dane. Jest to bardziej zarezerwowane dla danych wejściowych formularza lub danych utworzonych w interfejsie, na przykład przez użytkowników.Odpowiedzi:
Ucieczka zależy całkowicie od kontekstu, w którym używasz funkcji. To, co jest bezpieczne dla wyświetlania wewnątrz
<h1>
znaczników, niekoniecznie jest bezpieczne dlavalue
atrybutu pola wejściowego, a nawet to niekoniecznie byłoby bezpieczne jakohref
wartość atrybutu ...W skrócie - przeprowadź sanityzację samemu, kiedy ją wyprowadzasz. Choć w przypadku
the_title ()
lubget_the_title ()
,esc_html
nie jest konieczne, ponieważ WordPress stosuje następujące funkcje:convert_chars
wptexturize
Uwaga:
the_title
drukuje tytuł - więcesc_html ( the_title () )
nie będzie działać. Podobniethe_content
drukuje zawartość (w każdym razie można oczekiwać, że treść wyświetli HTML).źródło
the_title_attribute()
Tak i nie - zależy od tego, czy chcesz, aby html tych funkcji był wyprowadzany, czy nie. Jeśli
the_content()
na przykład uciekniesz , a zawiera on<div>
tag, tag ten byłby faktycznie wyprowadzany na stronę w<div>
zamian.Nawiasem mówiąc, jeśli wyjdziesz z wyjścia tych funkcji, będziesz chciał użyć ich ekwiwalentów „get_” (np.
get_the_content()
), Ponieważ te funkcje bezpośrednio odbijają swoje wyjście.źródło
Możesz po prostu napisać taką funkcję i podłączyć ją do filtra_title :
źródło