The_title, the_excerpt, the_content gibi wordpress işlevlerinden kaçmalı mıyım


15

Ben kod bakmak vardı ama the_title the_content the_excerptvb gibi işlevlerde herhangi bir kaçan göremiyordum . Ben doğru okuma olmayabilir. Tema geliştirme bu işlevleri gibi kaçmak gerekir:

esc_html ( the_title () )

Düzenleme: Yukarıdaki kodun cevaplarında belirtildiği gibi, ne olursa olsun yanlış - kod okumuş olmalı esc_html ( get_the_title () )


Hayır, bu işlevler zaten sterilize edilmiştir, bu yüzden buna gerek yoktur. the_contentGirdiğiniz TinyMCE düzenleyicisinden HTML çıktısı hariç . Bu daha çok, örneğin kullanıcılarınız tarafından kullanıcı arabirimi tarafından oluşturulan ön girişler veya veriler için ayrılmıştır.
Adam

Yanıtlar:


15

Kaçış, tamamen işlevleri kullandığınız bağlama bağlıdır. İç <h1>etiketlerin görüntülenmesi için güvenli olan value, bir giriş alanının niteliği için görüntülenmesi güvenli değildir ve hatta bir hrefözellik değeri olarak güvenli olması gerekmez ....

Kısacası - sanitasyonu çıkardığınızda kendiniz yapın. Gerçi durumunda the_title ()ya get_the_title (), esc_htmlWordPress aşağıdaki fonksiyonları uygular, çünkü gerekli değildir:

Not: the_title başlığı yazdırır - bu yüzden esc_html ( the_title () )çalışmaz. Benzer şekilde, the_contentiçeriği yazdırır (her durumda, içeriğin HTML göstermesini beklersiniz).


ayy aptalca ... evet elbette esc_html (the_title ()) çalışmaz. Cevabınız için teşekkürler.
byronyasgur

4
İlgili: Bir HTML özelliğinde Yazı Başlığı çıktısı almak için şunu kullanınthe_title_attribute()
Chip Bennett

6

Evet ve hayır - bu işlevlerdeki html'nin çıktısının alınıp alınmamasına bağlıdır. the_content()Örneğin, kaçarsanız ve bir <div>etiket içeriyorsa , bu etiket aslında sayfaya &lt;div&gt;yazdırılır.

Bu arada, bu işlevlerin çıktısından kaçarsanız get_the_content(), bu işlevler doğrudan çıktılarını yansıtan "get_" eşdeğerlerini (örn. ) Kullanmak isteyeceksiniz .


0

Bunun gibi bir işlev yazabilir ve the_title filtresine bağlayabilirsiniz :

function my_escape_title( $title ){
    return esc_html( $title );
}
add_filter( 'the_title', 'my_escape_title' );
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.