Wir müssen hier etwas genauer hinschauen, um eine Antwort auf Ihre Frage zu erhalten.
Also, bloginfo
ist ein einfacher Wrapper herum get_bloginfo
.
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
Beachten Sie das zweite Argument display
. Mal sehen, was das macht.
<?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;
}
Wenn der Filter auf display
den Ausgang von eingestellt get_bloginfo
ist, wird er durch einen Filter geleitet.
Anstatt so etwas wie einen Aufruf esc_html
in einer Funktion fest zu codieren, verwendet WP ein eigenes Hook-System, um Dinge zu erledigen. Der Ort, an dem man das findet, ist wp-includes/default-filters.php
. Eine schnelle Suche bloginfo
in dieser Datei zeigt ...
<?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
ist im foreach
Array versteckt . Wie Sie sehen können, wird die Ausgabe von mit bloginfo
maskiert esc_html
.
Mit anderen Worten:
<?php
bloginfo('name');
Ist gleichbedeutend damit:
<?php
echo esc_html(get_bloginfo('name'));
Oder dieses:
<?php
echo get_bloginfo('name', 'display');
Also, nein, die Ausgabe von bloginfo
muss nicht maskiert werden. Auch die Ausgabe von get_bloginfo
solange das zweite Argument auf gesetzt ist display
.
Die Einschränkung ist jedoch, dass jeder den esc_html
Filter entfernen kann bloginfo
. Es ist also wahrscheinlich sicherer, nur der Ausgabe zu entkommen. Und wenn Sie die Ausgabe von bloginfo
für etwas anderes als die HTML-Anzeige verwenden (z. B. im alt-Attribut eines Bildes), sollten Sie sie natürlich durchlaufen esc_attr
.
esc_html
gibt es seit 2.8, also wurde es inbloginfo
github.com/WordPress/WordPress/blob/2.8-branch/wp-includes/…