Kami harus melihat sedikit lebih dalam di sini untuk mendapatkan jawaban atas pertanyaan Anda.
Jadi, bloginfo
adalah pembungkus sederhana get_bloginfo
.
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
Perhatikan argumen kedua display
. Mari kita lihat apa yang dilakukannya.
<?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;
}
Jika filter diatur ke display
output get_bloginfo
dijalankan melalui filter.
Daripada hardcode sesuatu seperti panggilan esc_html
dalam suatu fungsi, WP menggunakan sistem kait itu sendiri untuk melakukan sesuatu. Tempat untuk menemukan di mana itu terjadi adalah di wp-includes/default-filters.php
. Pencarian cepat bloginfo
di file itu mengungkapkan ...
<?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
disembunyikan di dalam foreach
array. Seperti yang Anda lihat, output dari bloginfo
lolos esc_html
.
Dengan kata lain, ini:
<?php
bloginfo('name');
Setara dengan ini:
<?php
echo esc_html(get_bloginfo('name'));
Atau ini:
<?php
echo get_bloginfo('name', 'display');
Jadi, tidak, output dari bloginfo
tidak perlu diloloskan. Output juga tidak get_bloginfo
selama argumen kedua diatur display
.
Namun, peringatannya adalah siapa pun dapat menghapus esc_html
filter bloginfo
. Jadi sepertinya lebih aman hanya untuk menghindari output. Dan, tentu saja, jika Anda menggunakan output bloginfo
untuk apa pun selain tampilan HTML (mis. Pada atribut alt gambar), Anda harus menjalankannya esc_attr
.
esc_html
sudah ada sejak 2,8, jadi sudah terhubung kebloginfo
github.com/WordPress/WordPress/blob/2.8-branch/wp-includes/…