如何在定制主题中包含侧边栏(带有小部件)?

时间:2014-10-15 作者:forrest

我已经创建了一个自定义WordPress主题,需要能够将侧栏包含在小部件中。我有侧边栏。php文件、函数代码和三个小部件等着见分晓。但是,唉,没有骰子。

这是侧边栏。php代码:

<?php
/**
 * The sidebar containing the main widget area
 *
 * If no active widgets are in the sidebar, hide it completely.
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */
?>

    <?php if ( is_active_sidebar( \'sidebar-1\' ) ) : ?>
        <div id="secondary" class="widget-area" role="complementary">
            <?php dynamic_sidebar( \'sidebar-1\' ); ?>
        </div><!-- #secondary -->
    <?php endif; ?>
下面是函数调用:

// Declare sidebar widget zone
if (function_exists(\'register_sidebar\')) {
      register_sidebar(array(
        \'name\' => \'Sidebar Widgets\',
        \'id\'   => \'sidebar-widgets\',
        \'description\'   => \'These are widgets for the sidebar.\',
        \'before_widget\' => \'<div id="%1$s" class="widget %2$s">\',
        \'after_widget\'  => \'</div>\',
        \'before_title\'  => \'<h2>\',
        \'after_title\'   => \'</h2>\'
    ));
}

if (function_exists(\'register_sidebar\')) {
        register_nav_menus(
            array(
                \'main_nav\' => \'Main Navigation Menu\'
            )
        );
}
我调用侧栏如下:

 <?php get_sidebar(); ?> 
我将非常感谢您的帮助,以正确显示此内容。

2 个回复
最合适的回答,由SO网友:Aibrean 整理而成

您的问题是所调用的动态侧栏与注册内容的ID不匹配。

匹配:

 <?php if ( is_active_sidebar( \'sidebar-widgets\' ) ) : ?>
        <div id="secondary" class="widget-area" role="complementary">
            <?php dynamic_sidebar( \'sidebar-widgets\' ); ?>
        </div><!-- #secondary -->
    <?php endif; ?>
寄存器侧栏

if (function_exists(\'register_sidebar\')) {
      register_sidebar(array(
        \'name\' => \'Sidebar Widgets\',
        \'id\'   => \'sidebar-widgets\',
        \'description\'   => \'These are widgets for the sidebar.\',
        \'before_widget\' => \'<div id="%1$s" class="widget %2$s">\',
        \'after_widget\'  => \'</div>\',
        \'before_title\'  => \'<h2>\',
        \'after_title\'   => \'</h2>\'
    ));
}
<?php get_sidebar(); ?> 告诉模板使用sidebar.php 文件

SO网友:Pieter Goosen

您有一个大问题,然后我会对您的代码提出一些建议

  • sidebar-widgets != sidebar-1 您注册了一个id为的提要栏sidebar-widgets 但你在打电话sidebar-1

    你不需要这样做if (function_exists(\'register_sidebar\')). register_sidebar 是一个核心功能,因此它将始终存在。是的not 错,但它浪费空间:-)(我的意见)

    将您的register_sidebar 函数中的函数并将其挂钩到widgets_init. 它只是让以后取消侧栏的注册变得更加容易

结束

相关推荐

is_active-sidebar loop

因此,我有4个小部件,它们位于大3列中,当它们不活动时,我会放置一个占位符作为用户指南,以便用户知道在哪里放置什么。我确实成功地计算出了is\\u active,但它原来是一个很长的代码,我想知道是否有办法缩短它。从available-course-list-1到-4的小部件<?php if ( is_active_sidebar( \'available-course-list-1\' ) ) : ?> <div class=\"large-3 medium-3 col