Мы должны посмотреть здесь немного глубже, чтобы получить ответ на ваш вопрос.
Итак, bloginfo
это простая обертка вокруг get_bloginfo
.
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
Обратите внимание на второй аргумент display
. Давайте посмотрим, что это делает.
<?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;
}
Если фильтр установлен display
на выход, get_bloginfo
он запускается через фильтр.
Вместо того, чтобы жестко кодировать что-то вроде вызова esc_html
функции, WP использует свою собственную систему ловушек, чтобы делать что-то. Место, где можно найти это, находится в wp-includes/default-filters.php
. Быстрый поиск bloginfo
в этом файле показывает ...
<?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
массиве. Как вы можете видеть, вывод bloginfo
получает с esc_html
.
Другими словами, это:
<?php
bloginfo('name');
Это эквивалентно этому:
<?php
echo esc_html(get_bloginfo('name'));
Или это:
<?php
echo get_bloginfo('name', 'display');
Таким образом, нет, выход bloginfo
не должен быть экранирован. Также не выводится до get_bloginfo
тех пор, пока второй аргумент установлен в display
.
Однако предостережение заключается в том, что любой может удалить esc_html
фильтр из bloginfo
. Так что, скорее всего, безопаснее избежать выхода. И, конечно же, если вы используете выходные данные bloginfo
для чего-либо, кроме отображения HTML (например, в атрибуте alt изображения), вы должны выполнить его esc_attr
.
esc_html
существует с 2.8, так что он подключен кbloginfo
github.com/WordPress/WordPress/blob/2.8-branch/wp-includes/…