WordPress主题制作全过程(八):制作index.php
前面我们已经制作完成博客所有公用页面sidebar.php、footer.php和header.php,今天开始我们就要制作单独的页面了。现在我们要制作的是索引页index.php,这里我们可以暂时把它理解成主页,但事实上它并不是首页这么简单(点此查看原因)。
在主页中主要就是文章列表,将你博客上的文章一篇一篇地列出来。你可能已经注意到,主页中每篇文章的样式都是一样的,只是标题、时间、作者和摘要等文字内容不一样而已,嗯!我们制作index.php也只需要一篇文章的html代码,不需要手动地去写那么多文章的html,况且这样也不是动态的内容。我们只需要一个循环就可以将所有文章显示到首页上,循环就是重复做某件事情,这里的循环是重复地输出文章。如果你之前学过任一门计算机程序设计语言的话,就不难理解什么是循环,循环的作用也一想就通,如while,for,foreach……
在这里插一句,如果你真的想了解如何制作主题,请打开的文本编辑器,跟着我一步一步地操作,一步一步地修改,每做一次修改就刷新一下你的博客看看有什么变化,这样才能够加深你的理解。如果你懒得动手,建议以后的内容就不用看了,看了对你帮助也不大。
现在开始制作index.php。初始情况下index.php中有三篇文章,打开index.php你可以看到文章的3个标记<!-- Blog Post -->,我们现在其他将两篇文章的代码删除,留下一篇,并将文章摘要去除。修改后的代码是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php get_header(); ?> <!-- Column 1 /Content --> <div class="grid_8"> <!-- Blog Post --> <div class="post"> <!-- Post Title --> <h3 class="title"><a href="single.html">Loreum ipsium massa cras phasellus</a></h3> <!-- Post Data --> <p class="sub"><a href="#">News</a>, <a href="#">Products</a> • 31st Sep, 09 • <a href="#">1 Comment</a></p> <div class="hr dotted clearfix"> </div> <!-- Post Image --> <img class="thumb" alt="" src="<?php bloginfo('template_url'); ?>/images/610x150.gif" /> <!-- Post Content --> <!-- Read More Button --> <p class="clearfix"><a href="single.html" class="button right"> Read More...</a></p> </div> <div class="hr clearfix"> </div> <!-- Blog Navigation --> <p class="clearfix"> <a href="#" class="button float"><< Previous Posts</a> <a href="#" class="button float right">Newer Posts >></a> </p> </div> <?php get_sidebar(); ?> <?php get_footer(); ?> |
从上面的代码可以看出,一篇文章的html骨架就是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div class="post"> <!-- Post Title --> <h3 class="title"><a href="single.html">文章标题</a></h3> <!-- Post Data --> <p class="sub"><a href="#">标签1</a>, <a href="#">标签12</a> • 发布时间 • <a href="#">评论数</a></p> <div class="hr dotted clearfix"> </div> <!-- Post Image 文章的缩略图 --> <img class="thumb" alt="" src="<?php bloginfo('template_url'); ?>/images/610x150.gif" /> <!-- Post Content --> 文章内容 <!-- Read More Button --> <p class="clearfix"><a href="single.html" class="button right"> 阅读全文按钮</a></p> </div> <div class="hr clearfix"> </div> |
不同主题的主题的文章html骨架是不一样的,如果你熟悉html,可以很快地分辨出文章骨架,以上是我们这个主题的骨架,我们将以此为基础给index.php加上动态内容:
1、添加文章标题
找到:
改成:
1 | <h3 class="title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h3> |
这里解释一下这几个php函数:
2、添加文章标签
我们很多人在写文章的时候都喜欢添加一些标签,况且侧边栏我们也加入了"标签云",我们的主题应该支持标签。找到:
改成:
1 | <?php the_tags('标签:', ', ', ''); ?> |
函数参考:the_tags
3、添加日期
找到:31st Sep, 09
改成:
1 | <?php the_time('Y年n月j日') ?> |
函数参考:the_time
关于该函数中 Y n j 获取的日期格式,你可以参考文档(中文),选择你喜欢的时间格式:zh-cn:自定义时间和日期
可能你看了以上提供的时间和日期文档,还是一头雾水,下面提供几个示例,你就差不多能够依样画葫芦,指定自己喜欢的时间日期格式:
| PHP代码 | 输出内容 |
| <?php the_time('Y年n月j日') ?> | 1999年5月1日 |
| <?php the_time('Y年m月d日') ?> | 1999年05月01日 |
| <?php the_time('Y-m-d') ?> | 1999-05-01 |
| <?php the_time('y-m-d H:i:s') ?> | 99-05-01 02:09:08 |
4、显示评论数
现在我们来添加评论数代码,查找代码:
改成:
1 | <?php comments_popup_link('0 条评论', '1 条评论', '% 条评论', '', '评论已关闭'); ?> |
该函数会根据文章的评论数量显示不同的文字链接,0 条评论、1 条评论等等,当然能你可以根据自己的爱好定制文字内容。该链接会直接打开对应的文章,并移动到文章的评论区,你可以点此查看效果:2 条评论
函数参考:comments_popup_link
5、添加编辑按钮
如果文章作者已登录,我们将允许他在首页点击对应文章的编辑按钮,就可以直接修改文章,这个功能是可选的,你可以不添加。接上面的评论按钮,我们在其后面添加相应代码:
1 | <?php comments_popup_link('0 条评论', '1 条评论', '% 条评论', '', '评论已关闭'); ?><?php edit_post_link('编辑', ' • ', ''); ?> |
函数参考:edit_post_link
6、添加文章内容
可能有些人喜欢在首页输出全文,而有些人喜欢在首页输出文章摘要,这里提供两种方案,任君选择。查找:<!-- Post Content -->
将其改成:
1 2 | <!-- Post Content --> <?php the_excerpt(); ?> |
只要在写文章的时候在"摘要"框内填写摘要,在首页显示的就是摘要,如果不填就输出全文!以下是方案二,用于输出全文,除非你在文章中使用了<!-- more -->,代码修改:
1 2 | <!-- Post Content --> <?php the_content('阅读全文...'); ?> |
函数参考:
7、阅读全文
这里给添加阅读全文链接,如果在6、添加文章内容中你选择了输出全文,本步骤可以忽略,查找代码:
改成:
1 | <a href="<?php the_permalink(); ?>" class="button right">阅读全文</a> |
8、添加文章循环
到目前为止,你的首页还只能显示一篇文章,要想输出所有文章,需要我们之前提到的循环。查找代码:
<!-- Blog Post -->
改成:
1 2 | <!-- Blog Post --> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> |
再查找:
改成:
1 2 | <div class="hr clearfix"> </div> <?php endwhile; ?> |
再次查找:
1 2 | </div> <?php get_sidebar(); ?> |
改成:
1 2 3 4 5 6 | <?php else : ?> <h3 class="title"><a href="#" rel="bookmark">未找到</a></h3> <p>没有找到任何文章!</p> <?php endif; ?> </div> <?php get_sidebar(); ?> |
好了,现在查看你的主页,是不是可以显示多篇文章了呢?文章数量取决于你在后台设置每页可显示的文章数量。以上的循环可以简化为以下内容,这样看起来应该比较容易理解了,在endwhile之前不断地输出每篇文章,直至文章数量达到每页显示的最大文章数量;如果你的博客上一篇文章都没有,就会输入无文章提示。
1 2 3 4 5 6 | <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 文章html骨架 <?php endwhile; ?> <?php else : ?> 输出找不到文章提示 <?php endif; ?> |
参考文档: The Loop
9、添加文章分页
上面你已经看到,每页只能显示部分文章,要想看下一页,就得添加分页。现在查找代码:
1 |
改成:
1 | <p class="clearfix"><?php previous_posts_link('<< 查看新文章', 0); ?> <span class="float right"><?php next_posts_link('查看旧文章 >>', 0); ?></span></p> |
参考函数:
10、文章缩略图
对于大部分人来说,不太需要文章缩略图的功能,而且有很多插件可以实现这个功能。这里我们将首页的文章缩略图代码删除:
1 2 | <!-- Post Image --> <img class="thumb" alt="" src="<?php bloginfo('template_url'); ?>/images/610x150.gif" /> |
另外,还有个存档页面的模板archive.php,跟index.php的制作过程完全一样,只不过需要在functions.php里添加一个函数,这里就不再罗嗦,下载自己看吧,注意:functions.php中的代码已经修改,要想让你的分类、标签等存档页能够正常显示,请下载最新的functions.php覆盖原来的。另外,标签页和分类页支持在该页面顶部显示介绍,前提是你在后台文章标签和分类处要填上了描述。
好了,到目前这个主题也像个样子了,不过还有很多要完善,后面我们将继续完善!按照惯例,继续提供经过本次修改后的主题文件下载:
WordPress主题制作全过程完整列表:
- WordPress主题制作全过程(一):基础准备
- WordPress主题制作全过程(二):主题文件构成
- WordPress主题制作全过程(三):HTML静态模板制作
- WordPress主题制作全过程(四):小试牛刀
- WordPress主题制作全过程(五):制作header.php
- WordPress主题制作全过程(六):制作footer.php
- WordPress主题制作全过程(七):制作sidebar.php
- WordPress主题制作全过程(八):制作index.php
- WordPress主题制作全过程(九):制作single.php
- WordPress主题制作全过程(十):制作comments.php
- WordPress主题制作全过程(十一):制作page.php
本文版权归露兜博客所有,转载引用请完整注明以下信息:
本文作者:Ludou
本文标题:WordPress主题制作全过程(八):制作index.php
本文地址:http://www.ludou.org/create-wordpress-themes-index.html

代码不会,想在底部添加日期个时间都不知道怎么加
现在好了,谢谢分享
不必客气。这些多多使用搜索引擎,肯定可以找到你想要的答案
博客内容很丰富 留个记号 有时间的话仔细看
不添加文章循环就无法显示文章内容吗?
直接调用the_content('阅读全文…') 文章内容无法显示喔
是的,必须添加循环!the_content只能在循环中应用,否则无效。
:!: 哈哈 谢谢解答 很好的教程快学完了
<?php previous_posts_link(‘<< 查看新文章’, 0); ?> 这个函数应该这样写吧:previous_posts_link(‘<< 查看新文章’, '0'),短一个单引号~同样的,next_posts_link(‘查看旧文章 >>’, 0)也是这样的~
文档:
http://codex.wordpress.org/Function_Reference/previous_posts_link
<?php previous_posts_link( $label , $max_pages ); ?>
这是该函数原型,有两个参数,其中 $max_pages 是 integer 类型,也就是整型,不是char,也不是string,所以你用单引号括起来是不合理。但是PHP弱化了变量的数据类型,所以不管你有没有加单引号,都可以解析成功,要是C语言的话,加单引号肯定报错。你可以参考integer类型的参数传递示例:
http://codex.wordpress.org/How_to_Pass_Tag_Parameters#Integer
如果$max_pages值为0的话,可以不传递参数,直接写< ?php previous_posts_link("<< 查看新文章"); ?>
有个问题,如果我想首页显示静态页面(在后台设置了显示关于页面),那么这个模板可以吗?
设置静态页面后,index.php就不起作用了。
请问在首页输出文章,怎么把它的日期格式给隐藏或删除掉?
index.php中查找:
the_time
可以找到类似:
the_time('…');
将这个删除就不显示日期了。
谢谢你的答复
请教一个问题:我想把整篇的文章都发到腾讯微博中去,t.qq.com/share/share.php?title=<?php the_content(); ?>,这样写会出现<p></p>标签,请问如何过滤掉这样的标签?
如果可以,可以看一下这个http://t.qq.com/p/z/6006088546715
把
<?php the_content(); ?>
改成:
<?php echo get_the_content(); ?>
呵呵,谢谢,高手就是高手!非常感谢!
看了2天- -才看到这,继续看ing. 很想把整个系列"偷回去"啊 嘿嘿
通常所指的"偷"都是在不为人所知的情况下进行的,既然想偷,我也没办法了…
- -那就光明正大的搬回家
放抢?
不好意思,又来打扰你啦。
我在学写the_tags标签,按理说很简单的样子,只要在相应的位置写出来,就应该显示正常。
然后我写出来<?php the_tags('种类:',',','');?>,然后在页面上显示的时候通常是这样的
标签 标签 种类:,
居然那个“种类:”在后面,而标签内容在前面。 我css里也没定义特殊的东东~~百思不得其解。
希望博主解惑
btw:总麻烦博主,不知道会不会影响博主心情。如果很恼火我这个小白,请写信给我。我将少问一些问题o(∩_∩)o
经过我这边的测试,种类是放在所有标签左边的,可能你的主题作了哪方面的限定,你可以改成以下代码试试:
种类:<?php the_tags('',',','');?>
你好,我制作的一个category.php,使用<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>的语句,结果出来的还是网站的最新文章而不是该分类的最新文章,问题出在哪儿,请赐教
你在category.php加入一些特殊内容,然后打开分类页面,看看是不是使用的category.php模板!需要确认以下几点:
1、category.php是分类页的模板,不是首页,如果是首页想显示某分类的文章,请使用query_posts:
http://www.ludou.org/wordpress_query_posts.html
2、"结果出来的还是网站的最新文章而不是该分类的最新文章",请确认你打开的是分类页。
3、请确认你已经阅读这篇文章的内容:
http://www.ludou.org/create-wordpress-themes-template-hierarchy.html
好像 添加编辑代码 给弄错了
哪里错呢?
我想问下怎么获取某个分类下的带附件的文章?
Ludou 大哥,有没用代码实现某篇文章的浏览次数的?能说一下怎么用代码来实现么?
具体请找Google和百度。
我仿了一个站
首页上不显示文章内容 只显示一个标题