WordPress 的小工具(widget)和插件一样,是帮助 WordPress 扩展各项功能的有力助手之一。
然而大多数人看到 widget 时,首先想到的就是 “重新排列侧边栏各小区块的工具”,不需要用到任何代码。 这种想法没错,不过这只是 widget 用法的冰山一角罢了。
1. Widget Logic 插件

有时候你可能想让不同的页面上显示不同的 widget 。 Widget Logic 插件可以帮你做到。
插件安装完毕后,你所用的 widget 的选项框里会多出一个 Widget Logic 的输入框。 你可以在这个输入框里填写各种 WordPress 条件标签,来决定这个 widget 会出现在哪些页面上。
上面的图表示,Calendar(日历)小工具只出现在名为 “Evil” 的页面上。 你可以使用多个条件标签,使 widget 出现在多个页面。
示例
使当前 widget 只出现在主页上:is_home()
使当前 widget 只出现在单篇文章页上:is_single()
使当前 widget 只出现在页面(page)上:is_page()
使当前 widget 只出现在存档页面(如分类页、标签页):is_archive()
使当前 widget 只出现在搜索结果页面上:is_search()
使当前 widget 出现在主页外的所有页面上:!is_home()
使当前 widget 出现在 “广告” 或 “联系方式” 页面上:is_page(‘advertise’) || is_page(‘contact’)
2. 让博客各版块都支持 widget

支持 widget 的主题向来比较受青睐, 不过用户们已经不满足于主题上仅有的 widget 区域。 如果能让页面上的所有版块都支持 widget,那该是多么美妙的一件事。
关于多区域 widget,我们之前发布过一篇简单的教程。
3. Query Posts 工具

Query_posts 模板标签是一个强大的 WordPress 函数,你可以在 loop 中用它来调用日志和页面。
如果你不了解 PHP 代码但又想利用 query_posts 标签的功能,可以使用 Query Posts 工具来调用 WordPress 日志和页面,并且可以以多种方式显示这些日志。
安装并启用这个小工具后,你会在后台 “小工具” 菜单里发现一个叫做 “Query Posts” 的新选项。
Query Posts 能做什么:
按照标签、分类、作者、时间、日期或自定义值显示日志
显示用户规定数字的日志
根据发布时间、标题或 ID 为日志排序(可升序,也可降序)
以全文、摘要或列表方式显示日志
显示 WordPress 的页面
4. 404 模板

很多 WordPress 主题(甚至包括默认主题 Default)的 404 模板文件都很平淡,不能提供有帮助性的信息。 例如,当你打开使用这些主题的 WordPress 网站的 404 页面时,通常只会看到 “Error 404 – Not Found” 这样没有人情味的字眼。
“最近文章” 、 “分类目录” 以及 “存档” 等小工具都可以用到 404 页面上。
首先需要在主题文件里注册一个 “404”widget 区域。 打开主题的 functions.php 文件,加入以下代码:
register_sidebar( array(
‘name’ => ‘404’,
‘id’ => ‘404’,
‘before_widget’ => ‘

‘,
‘after_widget’ => ‘

‘,
‘before_title’ => ‘

‘,
‘after_title’ => ‘


) );
?>
这样一个 widget 就注册成功了,然后你需要编辑主题的 404.php 文件,在文件里加入下面的代码:

就这么简单。 接下来你就可以在 “404” 小工具里加入任何 widget 了。之后每当有人访问你的 404 页面时,就会看到这些 widget 显示的内容(比如搜索框、最新发表的文章、分类目录列表或是 Query Post 列表等)。
5. 在两篇文章之间插入广告

你可以通过编辑主题在一定数量文章之间插入 widget 。 有些人就利用这种方法,在文章之间插入了广告。
和在 404 模板里添加 widget 一样,首先仍然是在主题里注册一个 widget 区域。 打开 function.php 文件,插入下面的代码:
register_sidebar( array(
‘name’ => ‘index-insert’,
‘id’ => ‘index-insert’,
‘before_widget’ => ‘

‘,
‘after_widget’ => ‘

‘,
‘before_title’ => ‘

‘,
‘after_title’ => ‘


) );
?>
要在索引页的文章之间插入广告,首先要打开主题的 index.php 文件,在结尾的 “endwhile” 附近插入下面的代码:

以上代码会在第二篇文章后插入 “indx-insert” 工具。你可以根据自己的需要,将 “$count==2” 中的数字 2 改成其它数字。
如果你希望在存档页(分类页、标签页等)的各篇文章之间插入广告,那么你还需要把上面的代码放入 archive.php 、 category.php 、 tag.php 文件中。利用 Widget Logic 插件和条件标签,你还可以在不同页面上显示不同类型的广告。