如何在Wordpress中将“%1 $ s”和“%2 $ s”转换为字符串

时间:2019-12-31 05:52:10

标签: php wordpress

通常,当您使用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>',
     )
 );

1 个答案:

答案 0 :(得分:1)

这部分是用名为dynamic_sidebar()的wordpress核心函数编写的。如果您仔细看过该函数,则会在该函数内的以下行中进行实际转换-

$params[0]['before_widget'] = sprintf( $params[0]['before_widget'], $id, $classname_ );