आपके प्रश्न का उत्तर पाने के लिए हमें यहाँ थोड़ा और गहरा देखना होगा।
तो, 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 डिस्प्ले के अलावा किसी भी चीज़ के आउटपुट का उपयोग कर रहे हैं (उदाहरण के लिए, किसी छवि की पूरी विशेषता में), तो आपको इसे चलाना चाहिए esc_attr
।