通常,当您使用sprintf时,您将写下%s并匹配下面的实际值(“%s” =“ p”,“%s” =“#999”等)
<?php
$output = sprintf(
'<%s style="color:%s">%s</%s>',
'p',
'#999',
'Text',
'p'
);
echo $output;
?>
但是在wordpress的register_sidebar()方法中,我知道sprintf将%1 $ 1和%2 $ s覆盖为“ widgetName-Number”(id)和“ widget widget_widgetName”(class)。
但是我不知道它们如何将“%1 $ 1”和“%2 $ s”转换为这些值?(因为在register_sidebar()方法中未提及这些值)
register_sidebar(
array(
'name' => 'sidebar',
'id' => 'sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-title">',
'after_title' => '</div>',
)
);
答案 0 :(得分:1)
这部分是用名为dynamic_sidebar()
的wordpress核心函数编写的。如果您仔细看过该函数,则会在该函数内的以下行中进行实际转换-
$params[0]['before_widget'] = sprintf( $params[0]['before_widget'], $id, $classname_ );