在wordpress中插入静态页面为页面(page)的方法

网站源码

缘起

最近又入手了一个新域名,好歹把二级域名索引了,之后cn域名www顶域空空如也,这可不行。之前也用wordpress做了多站点,利用wordpress做cms也方便管理,但是如果要加入空白页面,要么是过于定式的主题页面,要么自己写。而我自己的前端水平也是实在不敢恭维。加之静态页面和wordpress结合设置链接什么的要多方考虑,还不如纳入wordpress管理之下,那么有什么好办法把静态页面加入wordpress统一管理呢?答案是有的。

介绍

page介绍

wordpress博客主要有两部分构成posts和pages,但是对于wordpress新手来说,经常把这两个概念混淆。在pages和posts之间有很多不同点,知道并理解这些不同点,能够让我们更好的使用wordpress中的posts和pages。

页面page的特点

  • 博客中的page页面独立于post显示,通常很少发生变动(更为静态)
  • 通常使用page来和读者分享信息,但是很少去更新它(固定的)
  • page页面没有发布时间,我们不需要显示page发布的时间(但仍然有id)
  • 根据主题的不同,page可以显示在任何地方
  • page通常按字母排序,但是我们可以改变排序的方式
  • page没有标签和分类
  • page页面不会出现在RSS源中,读者需要访问博客才能看到page页面的更新情况
  • 不要在page页面中嵌入Post(page不支持时间,不过,利用小工具等做目录和页面导航是不错的)
  • 通过page页面之间的父子关系,可以建立复杂的网站结构。一般的主题下页面属于半静态管理,而本质是php动态内容。
  • 一般在底部都包含了诸如“关于我们”、“联系我们”等页面,WordPress 中的页面就是比较静态比较固定内容的页面,一般是独立的,与其他内容不太相关。如果有相关的内容,一般是父子关系,即父页面下面的子页面。而且页面可以很方便的定义“别名”(slug),也就是方便的自定义页面的链接。

发布(文章)post的特点

  • post通常按发布时间倒序排列(保持更新是个好习惯)
  • post经常被更新,需要显示发布时间(时间关联)
  • 可以通过标签和分类来组织post(话题和内容管理)
  • post会出现在Rss订阅中(订阅)
  • 文章之间有比较明确的时间、分类、标签等等相关关系。

page模板

模板样式template,由于页面结构、样式定义,在 WordPress 的主题目录中的 page.php 中被引用,所有的页面都是一种结构和样式下,只是替换了一些内容而已。这势必无法满足我们的一些个性需求。包括一些函数化的导航栏、页眉、页脚等。

举个例子,一般来说页面的模板就跟文章的模板差不多,一个标题加上正文内容和下面评论。如果我博客的某个页面,想要展示的是我的笔记扎,而我的作品集想用一些并排的方块样式展示而不是以传统文章的形式展示。那么,就需要来自定义这个页面模板了。强大的 WordPress 系统已经考虑到我们这种合理的不合理需求,并提供了两种强大的自定页面的方法:

  1. 在后台选项指定当前页面要调用的模板文件
  2. 使用主题文件优先级规则来覆盖默认页面模板

在通过这两种方法自定义页面样式之前,请先确保你已经做出了一个可以使用的页面模板文件(也可以是静态页面),不然的话本文是没有什么意义的。

模板之所以称为模板,其中一个是可以按名称调用,在模板(无论静态动态)头部加上形如

 

于是我们只要在静态页面头部加上模板名格式,再合理制定css、js、图片的关系位置和链接,静态页面也不是什么问题,而且也方便管理。至于页面数据库内容。。如果是纯静态页面留空就好了。更新可以用wordpress 的 file manager插件进行修改就行啦。

补充

页面专用模板

使用模板文件命名规则来覆盖默认模板样式

上面是使用了注释让 WordPress 直接识别页面模板文件,然后勾选。下面的这种方法使用的 WordPress 的主题文件命名优先级来覆盖原有页面模板样式。通过 WordPress 的主题文件优先级层次图可以得知:

  • page-{id}.php
  • page-{slug}.php

这两种类型命名的文件,会覆盖对应页面的默认页面模板。每个页面都会像文章一样有一个唯一的 id 。例如上图中的 id 1689,如果我们想要使用一个页面模板来覆盖默认页面模板的话,那么我们新建模板的名称应该是 page-1689.php ,然后把它放在主题的根目录下面,注意,是根目录下面,经测试放在子目录下面无法生效。

为了跟上文的有区别,我增加了一些文字,放置在根目录下面之后,刷新当前页面,结果发现没有变化。但是如果已经指定了当前页面的模板,明确指定的模板要比这种方式的模板优先级要高,所以如果要展现效果我们要到后台取消后台定义的模板。再来刷新一下,成功输出新增加的内容,说明方法生效:

如果你对当前页面应用了“别名”(slug),也可以使用 page-{slug}.php 的文件名来覆盖,slug 的覆盖方法要比 id 的方法优先级高,意思就是说如果一个 id 为 1689 的页面,别名为 bieming ,你分别用了这两种方式来覆盖默认页面模板,后者生效。

继续阅读