私たちはあなたの質問に対する答えを得るために、ここをもう少し深く見る必要があります。
したがって、のbloginfo
周りの単純なラッパーget_bloginfo
です。
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
2番目の引数に注意してください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
2番目の引数がに設定されている限り、の出力も行われませんdisplay
。
ただし、誰でもesc_html
フィルタをから削除できることに注意してくださいbloginfo
。したがって、出力をエスケープするだけの方が安全です。そしてもちろん、bloginfo
HTML表示以外の出力(たとえば、画像のalt属性)を使用している場合は、を介して実行する必要がありますesc_attr
。