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