首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在下划线主题中添加侧边栏的问题

在下划线主题中添加侧边栏的问题
EN

WordPress Development用户
提问于 2019-04-18 09:02:49
回答 2查看 755关注 0票数 0

我已经挣扎了好几个小时了,任何帮助都很感激。我使用下划线主题与一个侧边栏(侧栏-1,左边)和自定义侧边栏插件,以便我可以有不同的侧边内容在每一页。问题是当我添加一个新的侧边栏(侧栏-2)时,我想在页脚上方显示它,以便在每个页面上包含相同的内容。

functions.php:

代码语言:javascript
复制
function myunderscores3_widgets_init() {
    register_sidebar( array(
        'name'          => esc_html__( 'Sidebar', 'myunderscores3' ),
        'id'            => 'sidebar-1',
        'description'   => esc_html__( 'Add widgets here.', 'myunderscores3' ),
        'before_widget' => '',
        'after_widget'  => '',
        'before_title'  => '',
        'after_title'   => '',
        //'before_title' => '',       
    ) );
    register_sidebar( array(
        'name'          => esc_html__( 'Bottom Sidebar', 'myunderscores3' ),
        'id'            => 'sidebar-2',
        'description'   => esc_html__( 'Add widgets here.', 'myunderscores3' ),
        'before_widget' => '',
        'after_widget'  => '',
        'before_title'  => '',
        'after_title'   => '',
        //'before_title' => '',       
    ) );
}
add_action( 'widgets_init', 'myunderscores3_widgets_init' );

sidebar.php (用于侧栏-1内容):

代码语言:javascript
复制
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
    return;
}
?>

page.php (在侧边栏中拉-1):

代码语言:javascript
复制

footer.php (要拉侧边栏-2):

代码语言:javascript
复制
if (is_active_sidebar( 'sidebar-2' )) {
      dynamic_sidebar( 'sidebar-2' );
  }
?>

在将小部件内容添加到侧栏-2之后,除了一个没有侧栏-1内容的页面外,每个页面都可以正常工作。在这个页面上,侧边栏-2的内容出现了两次-在底部如预期和在侧边栏-1内容区域也!此外,“不-侧边栏”类在身体上丢失了。在后端,侧栏-1小部件通过每个单独的页面定位,而侧栏-2内容则通过小部件定位(‘为选定的Post类型作为边栏’-页面)。在侧边栏-2内容出现两次的实际页面上,我没有在实际页面中指定任何侧边栏,因为我是通过小部件设置这样做的。有什么想法吗?谢谢

EN

回答 2

WordPress Development用户

发布于 2019-04-18 10:56:53

模板文件包括在内,不像函数那样调用。尽管您调用了get_sidebar(),但幕后最终还是调用了include。换句话说,模板页面(如footer.php、page.php和sidebar.php)并不直接在函数中,因此不能像在sidebar.php中所做的那样“返回”它们。

因此,WordPress已经越过了这个点,然后运行了dynamic_sidebar( 'sidebar-1' );。现在,这里将有其他人必须跳进,并告诉您,它为什么加载错误的小部件。我不认为它会退回到一个活动的侧边栏,但至少基于您的代码,它似乎是。WordPress肯定会在菜单中这样做,除非你特别告诉它不要这样做。

但无论如何,我认为如果您只是修改代码,您将完全避免这种行为:

代码语言:javascript
复制
if ( is_active_sidebar( 'sidebar-1' ) ) :
?>

所以,我所做的就是使用翻转检查(删除!)然后用它包装整个dynamic_sidebar部分(使用:和endif的替代PHP格式;)

票数 0
EN

WordPress Development用户

发布于 2019-04-18 15:18:46

我不知道问题出在哪里,但是在删除了我所有的代码并再次创建了新的侧栏之后,它就开始工作了。可能是某个地方的错误还是缓存问题?

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

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

复制
相关文章

相似问题

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