为WordPress中不同页面搭配独特的Widgets

有些Widget,如Related Posts,一般来说只应出现在单帖的页面中,而通常首页里大家会习惯堆砌比较多的Widgets,如Twitter、Del.icio.us之类的。WordPress默认并没有给予用户这种便利,而且搜索了一下Plug-in Category似乎也没有找到这样功能的插件,只好自己动手来改造一下。

根据Google到的一些线索发现,其实Widgets机制本身是支持多个Sidebar的,不过大部分的Theme并没有很好的利用这项功能,即使有用到的情况也大多是并排多个Sidebar的用法。于是顺手牵羊,将它略加改造,用于在不同的页面显示不同的Sidebar。分享改造方法如下:

  1. 修改Theme下的functions.php,将
if ( function_exists('register_sidebars') )
  register_sidebar();

修改为:

if ( function_exists('register_sidebars') )
{
  register_sidebar(array('name'=>'Sidebar Home',));
  register_sidebar(array('name'=>'Sidebar Single',));
  register_sidebar(array('name'=>'Sidebar Archive',));
}
  1. 修改Theme下的sidebar.php,将
get_sidebar();

改为:

if ( function_exists('dynamic_sidebar')
{
  if (is_home() && dynamic_sidebar('Sidebar Home'));
  elseif (is_single() && dynamic_sidebar('Sidebar Single'));
  elseif ((is_archive() || is_search()) && dynamic_sidebar('Sidebar Archive'));
  else dynamic_sidebar();
}
  1. 然后回到你的首页后,再打开Widgets管理页面,就可以看到3个不同的Sidebar了。现在就来随心所欲的调整Blog在不同页面下的Widgets组合吧!

Tip:未设置的Sidebar将继承Sidebar Home。

Written on January 1, 2008