将侧栏添加到下划线主题时出现问题

时间:2019-04-18 作者:rookieloops

我已经为此挣扎了几个小时了,非常感谢您的帮助。我使用下划线主题和一个边栏(边栏-1,在左边)和自定义边栏插件,这样我可以在每个页面上有不同的边栏内容。问题是当我添加一个新的边栏(边栏-2)时,我希望它显示在页脚的正上方,以便在每个页面上包含相同的内容。

功能。php:

function myunderscores3_widgets_init() {
    register_sidebar( array(
        \'name\'          => esc_html__( \'Sidebar\', \'myunderscores3\' ),
        \'id\'            => \'sidebar-1\',
        \'description\'   => esc_html__( \'Add widgets here.\', \'myunderscores3\' ),
        \'before_widget\' => \'<section id="%1$s" class="widget %2$s">\',
        \'after_widget\'  => \'</section>\',
        \'before_title\'  => \'<h2 class="widget-title">\',
        \'after_title\'   => \'</h2>\',
        //\'before_title\' => \'<!--\', 
        //\'after_title\' => \'-->\',       
    ) );
    register_sidebar( array(
        \'name\'          => esc_html__( \'Bottom Sidebar\', \'myunderscores3\' ),
        \'id\'            => \'sidebar-2\',
        \'description\'   => esc_html__( \'Add widgets here.\', \'myunderscores3\' ),
        \'before_widget\' => \'<section id="%1$s" class="widget %2$s">\',
        \'after_widget\'  => \'</section>\',
        \'before_title\'  => \'<h2 class="widget-title">\',
        \'after_title\'   => \'</h2>\',
        //\'before_title\' => \'<!--\', 
        //\'after_title\' => \'-->\',       
    ) );
}
add_action( \'widgets_init\', \'myunderscores3_widgets_init\' );
侧栏。php(用于侧栏-1内容):

if ( ! is_active_sidebar( \'sidebar-1\' ) ) {
    return;
}
?>

<aside id="secondary" class="widget-area">
    <?php dynamic_sidebar( \'sidebar-1\' ); ?>
</aside><!-- #secondary -->
第页。php(拉入侧栏-1):

<?php
get_sidebar();
?>
</div><!-- wrapper -->    
页脚。php(拉入侧栏-2):

if (is_active_sidebar( \'sidebar-2\' )) {
      dynamic_sidebar( \'sidebar-2\' );
  }
?>
    </div><!-- #content -->
在将小部件内容添加到侧栏-2之后,除了一个没有侧栏-1内容的页面外,其他页面都可以正常工作。在这个页面上,侧边栏2的内容出现了两次——按预期在底部,也出现在侧边栏1的内容区域!此外,正文中缺少“无提要栏”类。在后端,边栏-1小部件通过每个单独的页面定位,而边栏-2内容通过小部件定位(“作为所选文章类型的边栏”-页面)。在边栏-2内容出现两次的实际页面上,我没有在实际页面中指定任何边栏,因为我正在通过小部件设置执行此操作。有什么想法吗?非常感谢。

2 个回复
SO网友:tmdesigned

模板文件包括在内,不像函数那样调用。即使你打过电话get_sidebar(), 最终在幕后include. 因此,换句话说,您的模板页面(如footer.php、page.php和sidebar.php)不直接在一个函数中,因此您不能像在sidebar中那样从中“返回”。php。

WordPress已经超过了这一点,然后开始运行dynamic_sidebar( \'sidebar-1\' );. 现在,其他人将不得不插手进来,告诉您为什么它加载了错误的小部件。我不认为它会退回到一个活动的侧边栏,但至少从您的代码来看,它似乎是这样的。WordPress肯定会在菜单中这样做,除非你明确告诉它不要这样做。

但在任何情况下,我认为只要修改代码,就可以完全避免这种行为:

if ( is_active_sidebar( \'sidebar-1\' ) ) :
?>

<aside id="secondary" class="widget-area">
    <?php dynamic_sidebar( \'sidebar-1\' ); ?>
</aside><!-- #secondary -->

<?php endif; ?>
所以我所做的就是使用翻转支票(删除!)然后用它包装整个dynamic\\u边栏部分(使用:和endif;的替代PHP格式)

SO网友:rookieloops

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

相关推荐

Adding Multiple Sidebars

大家好,我想向我的wordpress站点添加多个侧栏。我目前在函数中注册了两个侧栏。php类似:function themename_widgets_init() { register_sidebar( array( \'name\' => __( \'Sidebar\', \'themename\' ), \'id\' => \'sidebar-1\', \'des