将小部件拖到 Wordpress 中的小部件区域后出现警告

Warning after dragging widget into widget area in Wordpress

在我将小部件(比方说 "Search")拖到小部件区域后 "Footer" 我收到错误消息:"Warning: sprintf(): Argument number must be greater than zero in C:\xampp\apps\wordpress\htdocs\wp-includes\widgets.php on line 1199"。

WP-core widgets.php 中的这一行决定了 before-widgets 参数。我在我的主题的主根文件夹中的 "functions.php" 中使用了包含在 register_sidebar 中的自定义小部件区域。

我以前没有这个问题,我从 MAC 导入了带有主题数据的整个文件夹。我知道 APACHE 进行了多项安全检查,但不应涉及主题文件夹中的数据。

我使用的是最新的 Wordpress 4.1 版。为什么会出现此错误?

编辑:这是 functions.php 中生成小部件区域的代码:

function vidaneo_widgets_init() {
if ( function_exists('register_sidebar') ) {

  register_sidebar(array(
    'name' => 'Header',
    'description' => 'Header mit Logo, Navigation und Banner',
    'before_widget' => '<div class="header">',
    'after_widget' => '</div>',
    'after_title' => '</h6>',
    ));

  register_sidebar( array(
    'name'          => 'Hauptbereich (links)',
    'id'            => 'sidebar-content',
    'description'   => 'Hauptbereich links',
    'class'         => 'content',
    'before_widget' => '<div class="widget"',
    'after_widget'  => '</div>',
    'before_title'  => '<h3 class="content-title">',
    'after_title'   => '</h3>',
  ));

  register_sidebar(array('name' => 'Sidebar rechts',
    'id' => 'sidebar-right',
    'description' => 'Seitenbereich rechts',
    'before_widget' => '<div id="%1$s" class="widget %$s"',
    'after_widget' => '</div>',
    'before_title' => '<h6>',
    'after_title' => '</h6>',
    ));

  register_sidebar(array(
    'name' => 'Footer',
    'description' => 'Container für Footer-Widgets',
    'before_widget' => '<div id="%1$s" class="widget %$s"',
    'after_widget' => '</div>',
    'before_title' => '<h6>',
    'after_title' => '</h6>',
    ));
  }
}

我想我看到了问题。

'before_widget' => '<div id="%1$s" class="widget %$s"',

具体来说class="widget %$s"。 $ 在 sprintf 中用于参数交换。它要求您在它前面加上一个数字。由于只有 2 个参数传入,这应该可以正常工作:

'before_widget' => '<div id="%s" class="widget %s"',

或者,如果您想将 $ 保留在那里。

'before_widget' => '<div id="%s" class="widget %2$s"',

这里是 sprintf 页面供参考:

http://php.net/sprintf

HTH,

=C=