Тут ми повинні заглянути трохи глибше, щоб отримати відповідь на ваше запитання.
Отже, 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.