基于页面名称的动态侧边栏

时间:2012-09-06 作者:Owen O\'Neill

我想为我的WordPress站点做一个动态侧栏,这样它就可以根据页面标题引入正确的侧栏模板。

因此,如果我有10个侧边栏,都是这样命名的:

边栏模板名称:AboutSidebar模板名称:ContactSidebar模板名称:JobsSidebar模板名称:EtcSidebar模板名称:Page1

所以边栏“About”会出现在About页面上,联系人等也会出现边栏“About”。。。

你知道我该怎么做吗?或者有没有其他方法可以做到这一点?

3 个回复
SO网友:Milo

像这样的方法应该会奏效:

if( is_page() ) :
    $this_page = get_queried_object();
    if ( ! dynamic_sidebar( $this_page->post_title ) ) :
        echo \'No sidebar defined for this page title\';
    endif;
endif;

SO网友:alexndm

创建新模板时,可以尝试包括不同的侧栏

将侧栏命名为sidebar-jobs.php 然后在创建时template name: Jobs, 就这样叫这个侧边栏吧

<?php get_sidebar(\'jobs\'); ?>
创建metabox并列出所有已注册的边栏

<select>
  <?php foreach ( $GLOBALS[\'wp_registered_sidebars\'] as $sidebar ) { ?>
 <option value="<?php echo ucwords( $sidebar[\'id\'] ); ?>">
          <?php echo ucwords( $sidebar[\'name\'] ); ?>
 </option>

然后根据所选值-调用所选侧栏

SO网友:Ciprian

以下是我的一个网站上的一个实例:

if(is_page(\'about-us\')) {
    dynamic_sidebar(\'main-sidebar\');
}
if(is_page(\'contribute\')) {
    dynamic_sidebar(\'page-sidebar\');
}
if(is_front_page() && is_page(\'about-us\')) {
    dynamic_sidebar(\'main-sidebar\');
}
if(!is_front_page() && is_page(\'about-us\')) {
    dynamic_sidebar(\'another-sidebar\');
}

if(is_category(\'archive\')) {
    dynamic_sidebar(\'archive-sidebar\');
}
您可以看到我需要不同小部件的各种场景。

此外,在函数中。php,我有以下代码:

if(function_exists(\'register_sidebar\')) {
    register_sidebar(array(\'name\' => \'Homepage Sidebar\'));
    register_sidebar(array(\'name\' => \'Blog Sidebar\'));

    register_sidebar(array(
        \'name\' => __(\'Main Sidebar\'),
        \'id\' => \'main-sidebar\',
        \'description\' => \'This sidebar is active on Homepage, Despre Noi, Directioneaza 2%, and individual profiles.\'
    ));
    register_sidebar(array(
        \'name\' => __(\'Archive Sidebar\'),
        \'id\' => \'archive-sidebar\',
        \'description\' => \'This sidebar is active on Archive page.\'
    ));
}

结束

相关推荐

Custom Page Templates

我正在尝试找到添加页面模板的功能。我正在添加存档,但当我进入页面->添加新->时,我在侧栏中没有使用现有存档的选项。我想使用的php文件。有人能帮我吗?