WordPress 主题教程 #6d:搜索框和日历
2007年06月13日
搜索框和日历是从零开始创建 WordPress 主题系列教程的第六篇的第四部分,尽管这篇的题目是 搜索框(Search Form) 和 日历(Calendar),但是我同样也会介绍 元数据(Meta) 。这一篇我们会结束常规的侧边栏,然后将在下一篇将介绍如何窗体化(widgetize)化侧边栏。
第1步:增加搜索框
创建一个新文件,然后把该空白文件保存为 searchform.php(当然是和 index.php 在同一个文件夹下)。把 searchform.txt 中的内容拷贝到 searchform.php。
在 index.php 文件,在侧边栏的最顶部输入以下代码:
<li id=”search”>
<?php include(TEMPLATEPATH . ‘/searchform.php’); ?>
</li>

保存并刷新浏览器,结果如下:

刚才发什么了呢?
- <li id=”search”> - 开始一个名字为 search 的列表元素,给它一个 ID,这样就能够以后样式化它。
- include() - 导入任何你想导入的文件。这和使用 WordPress 模板函数去调用模板文件是不同的,因为 include() 只是简单导入已经存在的文件。这里是调用在
searhform.php文件中的代码。被导入的信息应该在一个博客上基本不会被改变的。 - TEMPLATEPATH - 主题文件夹的位置,这里是:wp-content/themes/tutorial
- '/searchform.php' - 文件名:/searchform.php
- 在 TEMPLATEPATH 和 "/searchform.php" 中间的点把它们连接起来,所以最终得到:
wp-content/themes/tutorial/searchform.php - </li> - 结束列表元素
注意,搜索框不像分类,归档,页面或者 Blogroll 一样有子标题。当然如果你愿意,也可以给它一个子标题。
第2步:增加日历
在搜索框或者页面链接列表下面输入以下代码:
<li id=”calendar”><h2><?php _e(’Calendar’); ?></h2>
<?php get_calendar(); ?>
</li>

保存并刷新浏览器,结果如下:

发生了什么?
- <li id=”calendar”> - 开始一个 ID 为 “Calendar” 的列表元素
- <h2> - 开始一个子标题
- <?php _e(’Calendar’); ?> - 输出 Calendar 这个词
- </h2> - 关闭子标题
- get_calendar() - 使用 get_calendar() 这个 WP 函数调用日历
- </li> - 结束列表元素
这样日历就完成了
第3步:增加元数据
在 get_links_list() 函数下输入以下代码:
<li><h2><?php _e(’Meta’); ?></h2>
<ul>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>
<?php wp_meta(); ?>
</ul>
</li>

保存并刷新浏览器,结果如下:
(如果你没有登录 WordPress)

(如果你已经登录)

那么这是怎么回事呢?
你开始一个列表元素(LI),跟着是一个子标题(H2) Meta。在子标题下,嵌入了一个无序列表(UL)。最后把每个链接都放入了列表元素中(LI)。
wp_register() 这个函数能产生一组 <li> 和 </li> 标签,如果你没有登陆,它显示注册(Register)链接,如果登录了,它显示的是 站点管理(Site Admin)的链接。
wp_loginout() 不会产生列表元素标签,所以需要我们手工输入列表元素标签,当你没有登录的时候,得到的是 登录(Login) 的链接,当已经登录的时候,得到的是登出(Logout)链接。
到目前为止,wp_meta() 没有做任何事情,他在网页上和源代码中都不会产生东西,现在不要考虑 wp_meta(),实际上你已经在使用它了。
到此为止,我们已经完成 Meta 并最终完成了常规的侧边栏。
WordPress 主题教程
- WordPress 主题教程:从零开始制作 WordPress 主题
- WordPress 主题教程 #1:介绍
- WordPress 主题教程 #2:模板文件和模板
- WordPress 主题教程 #3:开始 Index.php
- WordPress 主题教程 #4a:Header 模板
- WordPress 主题教程 #4b:Header 模板 2
- WordPress 主题教程 #5:主循环
- WordPress 主题教程 #5b:日志内容
- WordPress 主题教程 #5c:日志元数据
- WordPress 主题教程 #5d:Else,日志 ID,链接标题
- WordPress 主题教程 #5e:日志导航链接
- WordPress 主题教程 #6:侧边栏
- WordPress 主题教程 #6b:页面链接列表
- WordPress 主题教程 #6c:存档和链接列表
- WordPress 主题教程 #6d:搜索框和日历
- WordPress 主题教程 #6e:窗体化侧边栏
- WordPress 主题教程 #7:尾部
- WordPress 主题教程 #8:验证 XHTML
- WordPress 主题教程 #9:Style.css 和 CSS 介绍
- WordPress 主题教程 #10:十六进制颜色代码和样式化链接
- WordPress 主题教程 #11:宽度和布局
- WordPress 主题教程 #12:日志样式化和其他杂项
- WordPress 主题教程 #13:样式化侧边栏
- WordPress 主题教程 #14:底部和拆分 Index
- WordPress 主题教程 #15:子模板文件
- WordPress 主题教程 #16:留言模板
- erdaoo 的 WP Theme 教程学习笔记
- WordPress 主题教程电子书下载
翻译自:http://www.wpdesigner.com/2007/03/05/wp-theme-lesson-6d-search-form-and-calendar/,并根据中文习惯和个人理解做了修改!
13 条评论 添加你的评论 →

1. dflee0216 | 2007:10:30 - 21:08:25 | #
加了META,但是在未登陆状态只有一个登陆选项,没有注册选项
2. dflee0216 | 2007:10:30 - 21:14:38 | #
为什么我的头像没有显示?
3. 大猫 | 2007:10:31 - 06:22:25 | #
我的应该有吧,刚昨天注册..
4. dflee0216 | 2007:10:31 - 21:03:29 | #
看了你的头像,感觉你在嘲笑我。--|||
5. 胡戈戈 | 2008:01:31 - 10:45:20 | #
其实他是在嘲笑派对
6. xiaoniba | 2008:08:17 - 18:55:28 | #
请问那个搜索框在IE里是一行,在火狐里却两行,要都在一行内怎么解决?谢谢
7. 九千鸟 | 2008:09:14 - 14:37:26 | #
如果要初始化搜索框内的文字,并且在访问者输入的时候自动删除这些文字,该怎么弄?
8. 纪小年 | 2008:12:20 - 21:09:05 | #
TEMPLATEPATH和template的区别是什么?
为什么大写的和小写的效果不一样呢。而且我还发现<?php _e(‘categories’); ?>和<?php _e(‘Categories’); ?>也是不一样的。
为嘛不讲下呢?
9. 纪小年 | 2008:12:20 - 21:37:38 | #
<h2><?php _e(‘Meta’); ?>
我刷新页面出来的是功能两个字
<h2><?php _e(‘Pages’); ?>
结果还是Pages?
10. spluweijie | 2008:12:26 - 11:12:00 | #
我碰到和一楼一样的问题,请问怎么解决?路过的高手请指点下,谢谢!
11. Laden | 2009:03:23 - 20:31:16 | #
晕了 所有的php_e()的函数 输出的字符串全都不好用,请那位高手说下啊 !谢谢了!
12. 阿星 | 2009:04:17 - 20:36:26 | #
你看看,可能是引号的问题,要用英文的引号
13. zkay | 2009:05:17 - 15:47:55 | #
你的php_e是错误的
正确的中间有空格的,是php _e
应该是这样的