Sorunuza cevap bulmak için biraz daha derinlemesine bakmalıyız.
Yani, bloginfo
basit bir sargı get_bloginfo
.
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
İkinci argümana dikkat edin display
. Bakalım bunun ne işe yaradığını.
<?php
function get_bloginfo( $show = '', $filter = 'raw' ) {
// snip snip, $output is fetched somewhere in here
if ( 'display' == $filter ) {
if ( $url )
$output = apply_filters('bloginfo_url', $output, $show);
else
$output = apply_filters('bloginfo', $output, $show);
}
return $output;
}
Filtre display
çıkışına ayarlanmışsa, get_bloginfo
bir filtre vasıtasıyla çalıştırılır.
esc_html
WP, bir işlevdeki çağrı gibi bir şeyi sabit kodlamak yerine , işleri yapmak için kendi kanca sistemini kullanır. Bunun gerçekleştiği yeri bulabileceğiniz yer wp-includes/default-filters.php
. bloginfo
Bu dosyada yapılan hızlı bir arama ...
<?php
// Format strings for display.
foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'widget_title' ) as $filter ) {
add_filter( $filter, 'wptexturize' );
add_filter( $filter, 'convert_chars' );
add_filter( $filter, 'esc_html' );
}
bloginfo
foreach
dizide gizlidir . Gördüğünüz gibi, çıktısı bloginfo
kaçtı esc_html
.
Başka bir deyişle, bu:
<?php
bloginfo('name');
Buna eşdeğerdir:
<?php
echo esc_html(get_bloginfo('name'));
Veya bu:
<?php
echo get_bloginfo('name', 'display');
Yani, hayır, çıktısının bloginfo
kaçmasına gerek yok. Ayrıca get_bloginfo
ikinci argüman olarak ayarlandığı sürece çıktı da alınmaz display
.
Ancak uyarı, herkesin esc_html
filtreyi çıkarabilmesidir bloginfo
. Yani sadece çıktıdan kaçmak daha güvenli. Ve elbette, bloginfo
HTML ekranından başka bir şey için çıktı kullanıyorsanız (örneğin bir görüntünün alt özelliğinde), bunu çalıştırmanız gerekir esc_attr
.