如何自定义WordPress主题:侧边栏
在上篇文章中我们优化完成了头部,接下来要讲解的为侧边栏,其实自从WordPress系统整合了Widget功能后,侧边栏修改起来就方便多,大多数的主题都支持Widgets功能,当然如果你下载的主题并不支持Widgets功能的话,你可直接联系主题作者,或若是你懂一点点的PHP和E文的话,也可自己给主题添加Widget功能,在这里首先讲解下Widget的用法,而后将为您简单的讲解下怎样让你的主题支持Widgets的方法。
首先进入后台点击Design–>Widgets:
选择你想要添加的项目,点击侧边的”add”,所选项目会自动出现在左边,当然你可拖动左边的项目来排序。如果你想在侧边栏添加广告的话,可直接添加一个”TEXT”项目,自定义其标题,并在里面输入广告代码即可,最后别忘记了点击保存即”Save”按钮。没错,有了Widget功能后,修改侧边栏就是这么简单。当然如果你懂一些WordPress的Loop的话,能让你的侧边栏看起来更酷点,比如说在不同页面让侧边栏显示不同的内容,其具体的方法我们下篇文中再作讨论。
如果你发现下载的主题并不支持Widgets功能,而你也无法联系到作者的话,那么我们只能自己手动修改下主题,让其支持Widges功能,在这里我简单的讲解下。貌似看起来有点复杂,其实只要几行代码即可搞定。首先在主题的functions.php中(如果你发现主题中并没有functions.php文件的话,自己新建个即可。),添加以下代码:
<?php if ( function_exists('register_sidebar') ) register_sidebar(array( 'before_widget' => '', 'after_widget' => '', 'before_title' => '<div class="title">', 'after_title' => '</div>', )); ?>
在这里简单的讲解下,其中’before_widget’ =>”是指在你侧边栏项目前的HTML标签,比如说你的侧边栏的代码类似与一下情况:
<div id="sidebar"> <li id="about"> <h2>About</h2> <p>This is my blog.</p> </li> <li id="links"> <h2>Links</h2> <ul> <li><a href="http://example.com">Example</a></li> </ul> </li> </div>
这时候你需在里面添加
<li>
标签,添加后类似于:
'before_widget' =>'<li>'
同理’after_widget’ =>则指项目结尾的标签,在这里只需添加
</li>
即可。
当然很多情况下侧边栏的前后并没有任何标签,这时候我们只需留空即可。接下来’before_title’ =>”则是指项目标题前的HTML标签,以上面的代码为例的话,则为
'before_title' =>'<h2>'
同理后面则为
'after_title' ='<h2>'
接下来编辑sidebar.php,在侧边栏标签后,也就是类似于
<div id="sidebar">
添加以下代码:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
并在HTML标签结束前添加
<?php endif; ?>
好了,至此你的主题已经能完美支持WordPress自带的Widgets功能。后面的讲解对于WordPress新手来说着实有点不易明白,有什么问题也可随时联系我,呃,对于WordPress高手来说,这些应该都是小儿科了,文章中有什么漏洞和错误的话还望指出来。
WordPress sidebar - WordPress - 主题 - 设计
« 如何自定义WordPress主题:头部 11个新WordPress技巧 »

不知道这么晚你还在不?晚上有事出去了。
你好,我想把“分类”做到Widget里去应该怎么做呢?
想把某个分类独立出来放在Widget,让Widget显示这个分类的一张图片和一部分文字。
谢谢你的回答:)
@风云:): 你好,wp的widget中有自带的分类模块,只需添加过来就行,至于为分类添加图片和描述则需自行编辑sidebar.php,不过你可以通过添加一个TEXT文本模块,在里面添加html来达到次目的。
这个有点问题,参数里少了个注册的侧边栏数
”,
‘after_widget’ => ”,
‘before_title’ => ”,
‘after_title’ => ”,
));
?>
<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '',
'after_widget' => '',
'before_title' => '<div class=”title”>',
'after_title' => '</div>',
));
?>
@thirteen 呵,其实自己不懂PHP,这个是官方给出的代码示例。