귀하의 질문에 대한 답변을 얻으려면 여기를 조금 더 깊이 살펴 봐야합니다.
따라서 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
.