怎么样修改WordPress主题模板

是否能准确按照你的意图的让你的WordPress博客展现出来的关键在于你是否了解WordPress主题模板页面.这里所说的主题文件,指的是显示出来的页面,而不是为了实现评论和侧边栏之类的功能。大多数用户不使用WordPress安装时自带的默认主题,他们会在互联网上下载免费主题。这是一种自定义博客样式的好方法,但不是所有主题开发者都用相同的方式设计主题。 主题的质量很大程度上取决于网页设计师在设计主题上耗费的时间以及他们本身对WordPress的了解。

下面我会为大家介绍设计主题页面的所有相关知识,通过这些下面的信息你甚至可以开始为自己设计一个主题。 除非你是专家级的主题开发者,否则都可以从这里学到些新的东西

WordPress工作原理

你了解WordPress最重要的东西就是它的模板层次,或者说是“WordPress调用页面的顺序”。 “index.php”是唯一一个所有WordPress主题的PHP文件中都必须带有的文件。换句话说,你完全可以只用一个“index.php”文件来实现WordPress所有的单独功能。

页面调用顺序

每当有WordPress页面(你愿意额话可以称之为WordPress引擎)被调用时,它会判断(通过排除法)页面的类型。 这类似于询问“我在哪儿?”。 WordPress回答“我在…类型的页面上”,然后以特定顺序调用页面。 WordPress找不到需要的PHP文件时,会使用“index.php”文件来代替所需文件。 WordPress首先会寻找以下九种基本页面:

我是在首页(Home Page)上吗?

如果WordPress判断是在首页上,会先调用“home.php”文件然后再调用“index.php”。

我是在日志(Post Page)页上吗?
如果是(单篇)日志页,首先调用“single.php”然后默认调用“index.php”。

我是在页面(‘Paged’ Page)页上吗?
如果是静态页面或“页面型”页面(应用了模板的页面),WordPress首先调用“pagetemplate.php”然后默认调用“index.php”。

我是在分类页(Category Page)上吗?
如果WordPress判断是分类页,则首先调用该类别编号的页面,例如“category-7.php”。 找不到相应文件时可以查找“category.php”(category.php可以用于所有类别页)。 如果没有“category.php”则继续查找“archive.php”,最后默认调用“index.php”。

我是在标签(Tag Page)页上吗?
如果WordPress判断是标签页,会首先加载“tag-slug.php”文件,以具体的slug(别名)为标签名。 如果标签是“wordpress hacks”,那么标签别名页就是“tag-wordpress-hacks.php”。 如果加载不成,WP会继续查找“tag.php”文件,该文件可用于所有标签页,然后调用“archive.php”,最后默认调用 “index.php”。

我是在作者页(Author Page)上吗?
博客拥有多个作者时,WP会首先寻找“author.php”文件以显示作者详情。 如果没有“author.php”则继续查找“archive.php”,最后默认调用“index.php”。

我是在存档页(Archive Page)上吗?
WP为之前的日志加载信息页面时,同时也加载了存档页。 WP首先加载“date.php”,其次是“archive.php”,最后默认加载“index.php”。

我是在搜索页或404页(Search or 404 Page)上吗?
若WP判断是在搜索结果页或404(页面未找到)页,会尝试加载search.php或404.php文件。 如果无法加载search.php或404.php,WP仍然默认加载“index.php”。

我是在附件(Attachment)页上吗?
附件页是所有WordPress主题模板页面中使用次数最少的一种页面类型。 WordPress通常用这些特殊的附件页来加载若干信息,这些信息解释首先查找“image.php”, “audio.php”, “video.php”, 以及“application.php”的原因。 然后WP查找“attachment.php”或“single.php”,如果这两个文件不可用,默认查找“index.php”。

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