将小部件拖到 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 页面供参考:
HTH,
=C=
在我将小部件(比方说 "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 页面供参考:
HTH,
=C=