WordPress 不同页面调用不同侧边栏

是不是已经厌倦了每页千篇一律的页面了呢?是不是想让你的侧边栏更加丰富多彩?是不是想让你的侧边栏更加充实? index.php、page.php、archive.php、single.php…… 每个页面都调用着同一个 sidebar.php,其实我们完全可以为不同的页面调用各自独立的不同的侧边栏。

实现不同页面调用不同侧边栏的想法很简单:注册一个新的侧边栏 sidebar2.php,然后在需要调用 sidebar2 的页面代替原来的 sidebar。

步骤:

1、注册一个新的侧边栏 sidebar2。

在主题文件夹下的 function.php 中找到类似以下代码:

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '<div class="widget">',
        'after_widget' => '</div>',
        'before_title' => '<h3>',
        'after_title' => '</h3>',
    ));

然后以相同的格式再注册添加一个 sidebar2。例如:

if ( function_exists('register_sidebar') )
    register_sidebar(array(
    'name' => 'sidebar2',
        'before_widget' => '<div class="widget">',
        'after_widget' => '</div>',
        'before_title' => '<h3>',
        'after_title' => '</h3>',
    ));

2、新建 sidebar2.php 调用新注册的 sidebar2。

在 sidebar.php 中找到以下代码:

<div class="sidebar">   
    <?php include_once("tab.php"); ?>
    <?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar() ) : else : ?>
    <?php endif; ?>
</div>

然后以相同的格式新建 sidebar2.php 文件调用 sidebar2。例如:

<div class="sidebar">   
    <?php include_once("tab.php"); ?>
    <?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(sidebar2) ) : else : ?>
    <?php endif; ?>
</div>

3、最后,在需要的页面调用 sidebar2.php 文件。

这里以 page.php 为例调用 sidebar2.php。在 page.php 中找到如下代码:

<?php get_sidebar(); ?>

修改为:

<?php include_once("sidebar2.php"); ?>

如果以上操作步骤都正确的话,会在小工具里多一个名为 sidebar2 的 Widget,你可以拖动添加你所需要的 Widget,如果你想要更多不同的侧边栏,还可以用相同的方法注册 sidebar3、sidebar4……

  1. Pingback: if(is_home()等无效/失效的解决办法 - 奚少收藏小窝

  2. 万戈我特别想知道这个是什么机制。
    也就是 就会读取sidebar2.php 那么我写 index.php呢? 侧边栏就会读取index的内容么?

    它仅是作用于侧边栏的么
    我的意思是他怎么就知道将这个sidebar2.php放到sidebar的位置呢?

  3. 我的是单个侧边栏,用 is_single() 、is_page() ... 来定义不同页面的 sidebar

    对了,刚才浏览时发现你的侧边栏的标题“红杏出墙”了。