Chúng ta phải nhìn sâu hơn một chút ở đây để có câu trả lời cho câu hỏi của bạn.
Vì vậy, bloginfolà một gói đơn giản xung quanh get_bloginfo.
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
Lưu ý đối số thứ hai display. Hãy xem những gì nó làm.
<?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;
}
Nếu bộ lọc được đặt thành displayđầu ra của get_bloginfothì chạy qua bộ lọc.
Thay vì mã hóa một cái gì đó giống như một cuộc gọi đến esc_htmltrong một chức năng, WP sử dụng hệ thống hook riêng của nó để thực hiện mọi việc. Nơi để tìm thấy rằng nơi đó xảy ra là trong wp-includes/default-filters.php. Một tìm kiếm nhanh bloginfotrong tập tin đó cho thấy ...
<?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được ẩn trong foreachmảng. Như bạn có thể thấy, đầu ra của bloginfođược thoát với esc_html.
Nói cách khác, điều này:
<?php
bloginfo('name');
Tương đương với điều này:
<?php
echo esc_html(get_bloginfo('name'));
Hoặc này:
<?php
echo get_bloginfo('name', 'display');
Vì vậy, không, đầu ra của bloginfokhông cần phải thoát. Không có đầu ra get_bloginfonào miễn là đối số thứ hai được đặt thành display.
Tuy nhiên, cảnh báo là bất cứ ai cũng có thể loại bỏ esc_htmlbộ lọc khỏi bloginfo. Vì vậy, nó có thể an toàn hơn chỉ để thoát khỏi đầu ra. Và, tất nhiên, nếu bạn đang sử dụng đầu ra bloginfocho bất cứ thứ gì ngoài màn hình HTML (ví dụ: trong thuộc tính alt của hình ảnh), bạn nên chạy nó qua esc_attr.