WordPress如何修改模板文件
收藏和转载:【作者】小虎,【来源】WordPress中文论坛
WordPress模板文件的工作机制:
如果访问者访问你博客首页时,wordpress首先就会去找你模板目录里的这个文件:home.php,如果没有,就用index.php这个模板文件来显示首页。
如果访问者点击你博客里名为“abc”的这个分类,url会连接到:http://yourwp/archives/category/abc,如果这个分类的ID是3的话,wordpress首先就会去找这个模板文件:category-4.php,并用它来显示这个分类,如果category-4.php不存在,wordpress就会去找category.php,如果也不存在,就会去找archive.php,如果还不存在,最终就会使用index.php来显示这个分类。
在一位国外bloger那里看到的一张图可以很好的解释WordPress的Themes的工作层次(机制?),我将它重绘了一遍,可以更好的阅读:
图中都是基本的模板文件,我再将WordPress模板文件各自的作用较全面的列一个表:
进一步说明
WordPress主题模板内部工作情况:
正如我前面所说,你可以用单独一个index.php文件来完成以上九种类型页面的功能。 如果是那样的话一个index.php恐怕得包含很多零碎的代码,未免有点繁琐,这时候如果要进行修改模板的话就显得有点放不开手脚。
同样的,就像WordPress查找九种基本页面一样,每个主题模板页面也包含九种基本的WordPress元素:
1、调用页眉
2、开启the loop(主循环)
3、调用永久链接与一些网页上的meta
4、调用以通知WordPress该获取的信息
5、调用以获取获取文章内容或摘要
6、(或许)更多的meta
7、关闭the loop(主循环)
8、调用侧边栏
9、调用页脚
这仅仅是WordPress的元素,能让这些元素运行的PHP代码分布在不同的地方,让你的主题版面和平面设计保持正常工作。 下面我要详细介绍一下这些元素,以便大家进一步了解如何设计主题模板页面。
调用页眉,侧边栏以及页脚
这三种元素基本类似。 当你在模板中看到以下代码:
<?php get_header(); ?>
表明WordPress打开了“header.php”文件。 get_sidebar() (sidebar.php) 和 get_footer() (footer.php)也是同样的道理。 你可能会有很多页眉、页脚和侧边栏,这时可以点击上面的“条件标签”查看相关内容。
开启the loop(主循环)
“WordPress Loop”会在数据库中持续调用文件,直到WordPress终止调用。 “the loop”的结构随显示页面类型而变,WordPress尝试加载的每个基本类型页面都有一个“loop”。
下面是开启the loop的代码:
<?php if ( have_posts() ) : <?php if ( have_posts() ) : the_post(); ?>
我们可以看到,代码被拆分开来,have_posts用以定义条件标签,while和the_post则各成一部分,但这仍然是the loop,在所有页面中基本都是这样。 多行loop时的一个用法是:用query_posts在“if have_posts”和代码的剩余部分之间放置一个参数,用来显示单篇文章、某一时段的文章、最近一篇文章或者某一类别中的文章,也可以改变the loop中迭代文章的顺序。
调用永久链接与(若干)meta
通过the loop的每次迭代,开放The loop的最后部分(the_post)能够激活元素数据。 这里的个体数据通常是指“post meta”, 尤其是永久链接(URL)、标题、时间这样的meta。大多数主题会在单篇文章内容前显示一些信息,然后在文章内容后也显示一些信息——比如文章类别和标签。
下面是一些你可以在post meta中调用的内容: the_permalink, the_ID, the_title, the_time, the_author, the_author_email, the_author_posts_link, the_category, single_cat_title, the_tags, single_tag_titls, edit_post_link, comments_popup_link, comments_rss_link
下面是Post meta的代码示例:
<div class=”post” id=”post-<?php the_ID(); ?>”>
<h2><a href=”<?php the_permalink() ?>” rel=”bookmark”><?php the_title(); ?></a></h2>
</div>
用以通知WordPress应获取的信息的调用
之后WordPress会决定所显示的单篇文章内容的详细程度。 文章详细程度取决于你的主题使用的是“the_content”(显示全文)或“the_excerpt”(显示摘要)。
(可能有)更多的meta
上面提到过,文章下方都有指定的类别或标签,有时你还可能看到“edit”链接。 一些主题甚至在文章内容后添加了date published meta。
关闭the loop(主循环)
代码如下:
<?php else : ?>
<?php endif; ?>
这是一个多行代码,你可以在其中添加其它信息,例如“Sorry, we didn’t find anything”。 你可以在侧边栏之后、调用侧边栏和页脚之前找到“next”“previous”导航链接。
Loops
大多数loops与我在上面所举的例子都差不多,但这并不表示你不能随意修改这些loops。 推荐大家阅读WP Codex上的文章The Loop in Action,文章中列举了存档、类别以及单篇文章以及静态首页中的the loop。
WP Codex上the loop中也有一些在同一页面上放置多个loop的示例。 Perishable Press上有一篇关于多loop,多栏内容的精彩教程。 Perishable Press上还有一些很好的loop模板,以及一篇关于两栏水平序列文章的教程。
结论
只要掌握了一点这方面的知识,你就可以随意修改任何WordPress主题模板页面了。 现在你已经充分了解了WordPress的页面和the loop的运行,就可以征服任何难题了。 现在就开始你的博客主题设计之旅吧!


好文,受教了
谢谢了!
学习了,谢谢分享!