收藏和转载:【作者】小虎,【来源】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如何修改模板文件 | niaolei.org.cn 鸟类网图片

WordPress模板文件的工作机制

图中都是基本的模板文件,我再将WordPress模板文件各自的作用较全面的列一个表:

WordPress如何修改模板文件 | niaolei.org.cn 鸟类网图片

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的运行,就可以征服任何难题了。 现在就开始你的博客主题设计之旅吧!