首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >边栏id的register_sidebar / dynamic_sidebar

边栏id的register_sidebar / dynamic_sidebar
EN

WordPress Development用户
提问于 2015-06-05 17:58:49
回答 2查看 2.3K关注 0票数 0

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

代码语言:javascript
复制
Notice: register_sidebar was called <strong>incorrectly</strong>. 
No <code>id</code> was set in the arguments array for the "Header" sidebar.

因此,当我注册该侧栏时,我添加了如下所示的id参数:

代码语言:javascript
复制
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。

我试过:

代码语言:javascript
复制
dynamic_sidebar( 'Header' );

代码语言:javascript
复制
dynamic_sidebar( 'header-sidebar' );

我的理解是以上两者都应该有效。注意,如果我注释掉register_sidebar调用中的id参数并使用dynamic_sidebar( 'Header' );,一切都可以正常工作。我遗漏了什么?

这是WP 4.2.2。

因此,根据这些说明:列出所有侧边栏的名字?能够列出所有的侧栏名称,并且当我用register_sidebar设置id参数时,名称列表中的id会发生更改。我现在使用的特定侧边栏在设置id之前是‘侧栏-5’,之后是‘侧栏-jsp’。一旦设置了id字段,我就不能使用名为'Sidebar‘、原始id’侧栏-5‘或新id’侧栏-jsp‘的dynamic_sidebar

根据S_ha_dum的建议,我在函数中封装了一个侧栏,以便在“widgets_init”之后实现。这是行不通的。

代码语言:javascript
复制
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' );

我现在用的是:

代码语言:javascript
复制
<?php var_dump(dynamic_sidebar('sidebar-jsp')); ?>

我不知道这是怎么回事,但我没有一整天的时间来处理这件事。谢谢大家的建议。

EN

回答 2

WordPress Development用户

发布于 2015-06-05 20:53:29

当我测试你的代码时。我只能假设注册代码被过早地或太晚地连接到系统中。register_sidebar()应该钩住widgets_init根据法典。因此:

代码语言:javascript
复制
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' );
票数 1
EN

WordPress Development用户

发布于 2015-06-05 18:30:13

代码语言:javascript
复制
<?php dynamic_sidebar( 'new-header-sidebar' ); ?>

register_sidebar( array(
    'name' => __( 'Header', 'theme-slug' ),
    'id' => 'new-header-sidebar',
) );

你可能有身份证冲突,所以试着改变身份证

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/190618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档