注册侧栏/带有侧栏ID的动态侧栏

时间:2015-06-05 作者:JSP

我正在尝试消除调试中的以下错误:

Notice: register_sidebar was called <strong>incorrectly</strong>. 
No <code>id</code> was set in the arguments array for the "Header" sidebar.
因此,当我注册侧栏时,我添加了id参数,如下所示:

register_sidebar(array(
    \'id\' => \'header-sidebar\',
    \'name\' => \'Header\',
    \'before_widget\' => \'<div class="widget">\',
    \'after_widget\' => \'</div>\',
    \'before_title\' => \'<h3 class="widget-title">\',
    \'after_title\' => \'</h3>\',
));
现在不管我是使用name字段还是id字段dynamic_sidebar 始终返回false。

我尝试过:

dynamic_sidebar( \'Header\' );
以及

dynamic_sidebar( \'header-sidebar\' );
我的理解是以上两项都应该有效。注意如果我在register\\u侧栏调用中注释掉id参数并使用dynamic_sidebar( \'Header\' ); 一切正常。我错过了什么?

这是WP 4.2.2。

因此,根据这些指示:List all sidebar names? 我能够列出所有侧栏名称,当我用register_sidebar 名称列表中的id会更改。我现在使用的特定提要栏在设置id之前是“提要栏-5”,之后是“提要栏jsp”。一旦设置了id字段,我就无法使用dynamic_sidebar 名称为“Sidebar”、原始id为“Sidebar-5”或新id为“Sidebar jsp”。

根据s\\u ha\\u dum的建议,我在一个函数中包装了一个侧栏,以便在“widgets\\u init”之后实现。这不起作用。

function register_header_sidebar_jsp() {
    register_sidebar(array(
        \'name\' => \'Sidebar\',
        \'id\' => \'sidebar-jsp\',
        \'before_widget\' => \'<div class="widget">\',
        \'after_widget\' => \'</div>\',
        \'before_title\' => \'<h3 class="widget-title">\',
        \'after_title\' => \'</h3>\',
    ));
}
add_action( \'widgets_init\', \'register_header_sidebar_jsp\' );
我现在给它打电话:

<?php var_dump(dynamic_sidebar(\'sidebar-jsp\')); ?>
我不知道发生了什么事,但我没有一整天的时间来处理这件事。谢谢大家的建议。

3 个回复
SO网友:s_ha_dum

我测试时,您的代码可以正常工作。我只能假设注册码挂接到系统太早或太迟。register_sidebar() should be hooked on widgets_init per the Codex. 因此:

function register_header_sidebar_wpse_190618() {
  register_sidebar(
    array(
      \'id\' => \'header-sidebar\',
      \'name\' => \'Header\',
      \'before_widget\' => \'<div class="widget">\',
      \'after_widget\' => \'</div>\',
      \'before_title\' => \'<h3 class="widget-title">\',
      \'after_title\' => \'</h3>\',
    )
  );
}
add_action( \'widgets_init\', \'register_header_sidebar_wpse_190618\' );

SO网友:Brad Dalton

<?php dynamic_sidebar( \'new-header-sidebar\' ); ?>

register_sidebar( array(
    \'name\' => __( \'Header\', \'theme-slug\' ),
    \'id\' => \'new-header-sidebar\',
) );
您可能有身份证冲突,请尝试更改身份证

SO网友:shanebp

尝试启动id 带有“侧栏”的字段值。

如果这不起作用,那么顺序应该无关紧要,但请尝试以下codex示例:

register_sidebar( array(
    \'name\' => __( \'Main Sidebar\', \'theme-slug\' ),
    \'id\' => \'sidebar-1\',
    \'description\' => __( \'show on all posts and pages\', \'theme-slug\' ),
    \'before_widget\' => \'<li id="%1$s" class="widget %2$s">\',
    \'after_widget\'  => \'</li>\',
    \'before_title\'  => \'<h2 class="widgettitle">\',
    \'after_title\'   => \'</h2>\',
) );
另外,请尝试在id 领域

结束

相关推荐