注册侧栏()和获取侧栏()是如何协同工作的呢?

时间:2010-08-18 作者:jessegavin

Disclaimer: 我是WP的新手。

我用的是Starkers HTML5 framework theme. 在functions.php 我看到这个代码:

function starkers_widgets_init() {

  // Area 1, located at the top of the sidebar.
  register_sidebar( array(
    \'name\' => __( \'Primary Widget Area\', \'starkers\' ),
    \'id\' => \'primary-widget-area\',
    \'description\' => __( \'The primary widget area\', \'starkers\' ),
    \'before_widget\' => \'<li>\',
    \'after_widget\' => \'</li>\',
    \'before_title\' => \'<h3>\',
    \'after_title\' => \'</h3>\',
  ) );

  // Area 3, located in the footer. Empty by default.
  register_sidebar( array(
    \'name\' => __( \'First Footer Widget Area\', \'starkers\' ),
    \'id\' => \'first-footer-widget-area\',
    \'description\' => __( \'The first footer widget area\', \'starkers\' ),
    \'before_widget\' => \'<li>\',
    \'after_widget\' => \'</li>\',
    \'before_title\' => \'<h3>\',
    \'after_title\' => \'</h3>\',
  ) );

  // ... more calls to register_sidebar() ... 
}
并且在footer.php 我看到这个代码:

<?php get_sidebar( \'footer\' ); ?>
我不明白怎么回事get_sidebar() 知道如何获取该字符串参数并找到由register_sidebar(). 在函数中。我在上面发布的php代码片段。除了name, iddescription 财产。但我觉得奇怪的是get_sidebar() 将在这些属性中搜索“footer”。

我问的有道理吗?有丢失的东西吗?

我提出这个问题的原因是,我想了解更多关于WP体系结构的信息,我想能够定义一个自定义小部件区域,并知道如何在特定页面上呈现它。

非常感谢。

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

你只要打电话get_sidebar() 从…起index.php 然后加载主题文件sidebar.php.

register_sidebar(), 另一方面,用于插件等希望在sidebar.php 如果您的主题支持,请使用该文件。

在您的情况下,是否有一个名为sidebar-footer.php 在主题的目录中?

SO网友:John P Bloch

我从没想过get_sidebar(). 相反,我只是使用dynamic_sidebar(). 你可以这样称呼它:

dynamic_sidebar(\'first-footer-widget-area\');
这会处理整个侧边栏。不再包含文件,不再有杂乱无章的主题文件夹。如果我想有5个不同的边栏,它不会添加任何文件,只会在functions.php.

SO网友:Gerard ONeill

get_sidebar(\'name\') 获取名称的侧栏模板sidebar-name.php.

侧栏名称内。php中,有用于侧栏的HTML,以及对dynamic_sidebar(\'some-name-hopefully-the-same\'), 这就是小部件的用途。

register_sidebar(array(name=>\'some-name-hopefully-the-same\', ...)) 是允许dynamic\\u侧栏工作的功能。

如你所见,get_sidebar(templatename) 用于边栏模板。如果你不需要他们,你可以打电话dynamic_sidebar(sidebarname) 直接从您的主题。

SO网友:Annika Backstrom

get_sidebar(\'footer\') 尝试加载sidebar-footer.php 从活动主题。Starkers确实提供了这个文件。检查starkers/sidebar-footer.php 事情应该变得明朗起来。

结束

相关推荐

Adding goodies to themes

如何在主题更新时向Arjuna-X等主题添加内容而不丢失?儿童主题是一种很好的方式,还是有其他选择?如果新版本的主题对我添加的功能具有本机支持,该怎么办?