WordPress模板文件用法详细介绍

WordPress模板的加载机制非常灵活,可以精确的为每个页面定制不一样的模板,因此使用WordPress来搭建CMS站点是完全没有问题的。

并且,WordPress模板的重用性非常高,比如我们可以让所有页面共用一个头部模板header.php,但通过条件判断标签来为不同页面输出不同的关键词标签和描述标签内容。

主页模板

  1. home.php
  2. index.php

如果阅读设置中将首页显示设置为“您的最新文章”,那么主页优先加载home.php,如果home.php不存在,则加载index.php。事实上如果front-page.php存在,会最先加载front-page.php,但一般用不到front-page.php

首页模板

  1. front-page.php
  2. home.php
  3. page.php
  4. index.php

如果阅读设置中将首页显示设置为“一个静态页面”,那么加载顺序如上列表,这里需要注意page.php的加载优先级高于index.php,因为“一个静态页面”指定的就是一个Page页面。

文章页面模板

  1. single-{post-type}-{slug}.php:这里{post-type}是指文章类型,{slug}是指文章的别名。WordPress常用的两种Post Type:Post(文章)、Page(页面),你也可以自定义文章类型,不过自定义文章类型用得比较少,可能是太过于复杂,如无特殊需求一般不建议使用。示例:single-post-wordpress-template-hierarchy.php,其中wordpress-template-hierarchy是我当前文章的别名;
  2. single-{post-type}.php:这里{post-type}是指文章类型;
  3. single.php
  4. singular.php
  5. index.php

Page页面

  1. 自定义页面模板
  2. page-{slug}.php:这里{slug}是指页面的别名。示例:page-about.php;
  3. page-{id}.php:这里{id}是指页面的ID。示例:page-2.php;;
  4. page.php
  5. singular.php
  6. index.php

分类页面

  1. category-{slug}.php:这里{slug}是指分类的别名。示例:category-resources.php;
  2. category-{id}.php:这里{id}是指分类的ID。示例:category-3.php;
  3. category.php
  4. archive.php
  5. index.php

标签页面

  1. tag-{slug}.php:这里{slug}是指标签的别名。示例:tag-wordpress-template-tags.php;
  2. tag-{id}.php:这里{id}是指标签的ID。示例:tag-28.php;
  3. tag.php
  4. archive.php
  5. index.php

自定义分类法

和自定义文章类型一样,需要使用自定义分类法的情况很少见,如果你只是制作一般的博客或CMS模板,不需要了解这方面的知识。

  1. taxonomy-{taxonomy}-{term}.php:这里{taxonomy}为自定义分类法名称,{term}为分类别名。示例:taxonomy-product-books.php
  2. taxonomy-{taxonomy}.php:这里{taxonomy}为自定义分类法名称。示例:taxonomy-product.php
  3. taxonomy.php
  4. archive.php
  5. index.php

自定义文章类型

  1. archive-{post_type}.php:这里{post_type}是指自定义文章类型的名称。示例:archive-product.php
  2. archive.php
  3. index.php

作者页面

  1. author-{nicename}.php:这里{nicename}是指作者的昵称;
  2. author-{id}.php:这里{id}是指作者的ID;
  3. author.php
  4. archive.php
  5. index.php

日期归档页面

  1. date.php
  2. archive.php
  3. index.php

搜索结果页

  1. search.php
  2. index.php

404页面

  1. 404.php
  2. index.php

附件页面

  1. MIME_type.php:用MIME类型作为文件名称,例如:image.php, video.php
  2. attachment.php
  3. single-attachment.php
  4. single.php
  5. index.php

嵌入型模板

  1. embed-{post-type}-{post_format}.php
  2. embed-{post-type}.php
  3. embed.php

嵌入型模板可以用get_template_part()函数来加载,例如:

get_template_part( 'embed', 'content' );

通常搜索结果页和分类、标签、日期归档页的展示形式相同,因此我将内容输出的代码放在同一个文件中,再在这些模板中加载这个嵌入型模板。

其他模板

从以上内容可以看出,许多页面都有共同模板区,我们可能通过这个特点减少模板制作量,例如:分类、标签、日期归档页通常是同样的展现形式,因此只需要archive.php就够了。

Typora