`
天梯梦
  • 浏览: 13634356 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

WordPress 默认主题自定义页面模板

 
阅读更多

有的时候希望在 WordPress 网站上显示一些特殊形式的页面,就需要用到自定义页面模板。本文以 WordPress 内置的 TwentyElven(2011) 和 TwentyTen(2010) 主题为例做个详细介绍。与 WordPress 官方文档中的介绍不同的是,这里着重介绍 WordPress 默认主题静态页面模板的内部结构,以方便我们在自定义的时候进行修改。

 

文章先介绍一下 WordPress 主题的大致结构,然后以 WordPress 自带的主题,主要是 2011 主题为例说明页面模板的组成,最后给 3 个制作自定义页面模板的样例。

 

1. WordPress 主题的大致结构

以 Twenty Eleven(2011)主题为例,其文件夹下的文件组织结构如下所示。其中 // 号后面的内容为我的注释说明。相信即使是刚入门的朋友看了这个也能够对 WordPress 的主题有个较全面地了解,修改主题就比较顺利了。

 

在看下面的解释之前,需要先了解一个情况,那就是 php 代码的复用。我们看到的网页并不一定是由一个单独的 php 文件生成的,而是可以由一个主文件调用多个别的文件组合而成。这样就方便代码的复用:比如我想在每个网页都显示同样的一段话,那就没必要在每个不同网页对 应的不同 php 文件里将这段话重复写一遍,而只需要单独建一个 php 文件来生成这段话,再在主文件中需要的地方引用这个文件就可以了。

 

WordPress 有个要求,即所有主题的页面模板(主 php 文件,调用它即可形成某个网页页面),或者由它调用的模板中,必须在靠近开头的地方包含 wp_head() (通常放在 header.php 文件中,通过 get_header() 来调用),而在靠近结尾的地方包含 wp_footer()(通常放在 footer.php 文件中,通过 get_footer() 来调用),因为 WordPress 需要在这些地方处理一些数据。所以如果我们打开一个主题中的文件,发现靠近开头有 get_header() 而靠近结尾有 get_footer(),则它必然是一个主 php 文件,用于显示某个/某类网页页面。

 

为了避免混淆,下面统称一个单独的 php 文件为模板,如果是主文件则又称为页面(或页面模板),生成的我们浏览到的称之为网页。至于 php 文件调用,可以通过自写函数实现,也可以直接使用 php 的 include 或者 require 方法,涉及到 php 编程的问题,这里不再介绍。

twentyelven 文件夹内部文件组织结构图:
// 先介绍重要的
│ index.php // 主题的引导文件,也是默认的首页的模板
│ header.php
// 这个文件包含 HTML 的 <head> 部分(不显示在网页上,但是通过查看网页源文件就能看到), // 同时还可能包含一部分正文(HTML的 <body> 标签内的东西); // get_header() 就是调用它的。 // 比如水景一页下面整个浅灰色色背景的部分都是在这个文件中处理的
│ footer.php
// 用于显示页面下面的内容,包含 </body> 标签 // 比如水景一页上面整个黑色背景的部分都是在这个文件中处理的

// 下面 9 个文件都是页面模板,都调用了 get_header() 和 get_footer() // 并且一般都会调用 comments.php 以处理评论列表和评论框
│ 404.php // 用于显示自定义 404 错误网页的页面模板
│ archive.php // 用于显示文章存档网页的页面模板,比如按日期存档等页面
│ author.php // 作者文章存档页面模板(显示该作者所有文章列表网页)
│ category.php // 分类页面模板
│ image.php // 用于显示图片附件,页面模板
│ page.php
 // 用于显示静态页面(page)的页面模板,通过 get_template_part( 'content', 'page' ) 调用了 content-page.php
│ tag.php // 标签页面模板
│ single.php // 单一文章(post)页面,这是标准形式的 post,调用了 content-single.php
│ showcase.php // 特色文章页面模板;用这个模板来做首页其实挺不错的

// 下面这一组 11 个以 content 开头的文件,都只是某个页面的一部分,类似于上面的 comments.php 文件 // Twenty Ten 主题中用的是 loop 开头
│ content-aside.php
│ content-featured.php
│ content-gallery.php
│ content-image.php
│ content-intro.php
│ content-link.php
│ content-page.php
│ content-quote.php
│ content-single.php
│ content-status.php
│ content.php
// 以上 11 个文件是用来处理网页主体部分的; // 包含正文内容,包括文章(post)、静态页面(page),也就是我们通常所说的文章内容; // 2011 主题内置了几种文章形式(post format),可针对不同的文章形式使用不同的模板; // 当然如果你乐意,使用同一个模板也没有问题

│ comments.php
// 评论模板;这个不是一个单独的页面,需要在别的页面中调用此模板 // 使用 comments_template( '', true ) 来调用
│ searchform.php // 搜索框模板
│ search.php // “搜索”页面模板,还会调用 searchform.php 来显示搜索框,这是个页面模板
│ sidebar-footer.php
│ sidebar-page.php
│ sidebar.php // get_sidebar() 会调用此文件
// 这三个是用于显示网页上 WordPress 边栏的模板 // sidebar.php 会根据情况调用 sidebar-page.php 或者 sidebar-footer.php 或者同时调用两个
│ functions.php
// 主题自定义的一些功能函数,如果有的话可以覆盖 WordPress 内建函数
│ rtl.css
│ style.css
// 这两个是主题的样式表文件,其中 rtl 只用于显示从右到左写法的语言
│ editor-style-rtl.css
│ editor-style.css
// 这两个是主题提供给后台的编辑器样式文件,一般不修改
│ screenshot.jpg
│ screenshot.png
// 这两个是主题的缩略图
│ readme.txt // 主题的说明文档
│ license.txt // 主题的许可证内容
├─colors // 文件夹,包含选择黑色风格时需要调用的样式文件(省略其下的文件)
│
├─images // 文件夹,包含主题网页上用到的图片(省略其下的文件)
│ │
│ └─headers // 文件夹,包含顶部背景图片(省略其下的文件)
│
├─inc // 文件夹一些内部函数,基本不会自己修改(省略其下的文件)
│ │
│ └─images // 文件夹,包含一些图片(省略其下的文件)
│
├─js // 文件夹,包含主题自己的 JavaScript 文件(省略其下的文件)
│
└─languages // 文件夹,包含语言文件的文件夹(省略其下的文件)

2010 主题与之相差不是太多,不再啰嗦了。

 

2. 页面模板结构

下面来介绍一个完整的页面模板,仍是以 2011 主题为例。

根据前面的说明我们已经知道,实际上一个完整的页面模板就是 page.php,但是它会调用 header.php 来形成页头,content-page.php 来处理静态页面文章,sidebar.php 来形成边栏,最后是 footer.php 来形成页脚。

 

其中 header.php、footer.php 和 sidebar.php 是全站一致的,我们一般不做改动,那么剩下的自定义部分就是 page.php + content-page.php 了。

 

结合 page.php 源代码进行说明,其中红色字体是我的注释。下面是从 2011 主题中直接提出来的源代码:

<?php
/**
* The template for displaying all pages.
*
* This is the template that displays all pages by default.
* Please note that this is the WordPress construct of pages
* and that other 'pages' on your WordPress site will use a
* different template.
*
* @package WordPress
* @subpackage Twenty_Eleven
* @since Twenty Eleven 1.0
*/上面全都是文件中的注释,php 标签内的注释一般用 /* */ 包围,单行可以直接在注释前前用 // 如果要自定义页面模板,需要在这里添加下面的代码(绿色字体),TemplateName 就是模板名称了。 我们在编辑页面的时候,通过旁边的下拉菜单选择模板的时候看到的就是这个名字。
<?php /** * Template Name: TemplateName */ ?>
<div id="primary">
    <div id="content" role="main"> 这两行是 HTML 结构标签

<?php while ( have_posts() ) : the_post(); ?> 开始处理内容

    <?php get_template_part( 'content', 'page' ); ?> 调用 content-page.php,实际上可以将 content-page.php 里的内容全部复制过来替换掉这一行

    <?php comments_template( '', true ); ?> 调用评论 comments.php

<?php endwhile; // end of the loop. ?> 内容处理结束

    </div><!-- #content -->封闭 id="content" 那个 div
</div><!-- #primary -->封闭 id="primary" 那个 div
可以在这里加上 <?php get_sidebar() ?> 那么页面就有了边栏了,不过就需要调整样式了(style.css)
<?php get_footer(); ?>

 

3. 三种自定义页面模板方式

实际上是 4 种吧,最后的 C 也可以象前面的 A 和 B 那么分的 :D

 

A. 简单的页面模板 – 包含页面内容

如果只是想简单地在该页面中增加一些别的东西,比如放个 Google 地图什么的,或者将新浪微博嵌入进页面,同时还保留页面其它东西不变,我们就可以直接将自己的代码或内容挑个适当的地方插入进去就行了。

看了上面的注释,应该很容易找到自己要放东西的位置了吧?比如我的 Buzz 页面(该页面评论被我关闭了,所以看不到评论和评论框),现在就是在

<?php get_template_part( 'content', 'page' ); ?>

 

<?php comments_template( '', true ); ?>

 

之间插入了新浪微博的小工具代码(新浪微博 ——> 顶部工具条的 帐号 ——> 我的工具中)。

 

B. 简单的页面模板 – 不包含页面内容

很多时候我们的自定义页面模板中都不会用到页面内容,也就是说,我们新建了这个模板,然后编辑该页面内容的时候都让内容留空了。我们只希望它显示适用于这个页面的自定义内容,比如水景一页网站上的 链接 和 购物通道 页面。这样的话就可以将上面标记为蓝色字体的代码全都替换成自己的自定义内容

 

C. 复杂的页面模板

可是,很多主题会针对文章(post)和静态页面(page)的内容来设计样式(style.css)。为了让自定义内容样式与网站上其它页面的样 式一致,我们就需要用到 content-page.php 文件中的代码了。将其中的代码(注释就不要了吧)复制过来替换掉上面

<?php get_template_part( 'content', 'page' ); ?>

 

这一行代码,形成:

<?php
/**
* The template for displaying all pages.
*
* This is the template that displays all pages by default.
* Please note that this is the WordPress construct of pages
* and that other 'pages' on your WordPress site will use a
* different template.
*
* @package WordPress
* @subpackage Twenty_Eleven
* @since Twenty Eleven 1.0
*/上面全都是文件中的注释,php 标签内的注释一般用 /* */ 包围,单行可以直接在注释前前用 // 如果要自定义页面模板,需要在这里添加下面的代码(绿色字体),TemplateName 就是模板名称了。 我们在编辑页面的时候,通过旁边的下拉菜单选择模板的时候看到的就是这个名字。
<?php /** * Template Name: TemplateName */ ?>
<div id="primary">
    <div id="content" role="main"> 这两行是 HTML 结构标签

<?php while ( have_posts() ) : the_post(); ?> 开始处理内容

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1 class="entry-title"><?php the_title(); ?></h1>
</header><!-- .entry-header --> 这 3 行是内容标题,不想要就删除

<div class="entry-content">
<?php the_content(); ?> 这 1 行是内容,不想要就删除
<?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pages:', 'twentyeleven' ) . '</span>', 'after' => '</div>' ) ); ?> 这 1 行是……我也不知道是什么东西,不想要就删除
</div><!-- .entry-content -->

<footer class="entry-meta">
<?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
</footer><!-- .entry-meta -->这 3 行是那个“编辑”按钮,不想要就删除
</article><!-- #post-<?php the_ID(); ?> -->

    <?php comments_template( '', true ); ?> 调用评论 comments.php

<?php endwhile; // end of the loop. ?> 内容处理结束

    </div><!-- #content -->封闭 id="content" 那个 div
</div><!-- #primary -->封闭 id="primary" 那个 div
可以在这里加上 <?php get_sidebar() ?> 那么页面就有了边栏了,不过就需要调整样式了(style.css)
<?php get_footer(); ?>

 

然后我们可以将代码放在

<?php the_content(); ?>

 

这一行的前面或者后面,自己调整。©

 

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/wordpress-default-theme-page-template/>。转载请保留此信息及相应链接。

 

 

分享到:
评论

相关推荐

    WordPress自定义主题的手机插件MobilePress

    MobilePress可以识别用户的浏览器种类,如果是手机浏览器,就会使用一款针对手机设计的主题模板,而不是blog默认的模板。MobilePress插件能让你的博客在手机Wap浏览器上优化后正常显示,为你节省流量,此插件比较...

    Wordpress响应式中文网址导航主题模板HaoWa1.3.1.

    编辑器形式的功能配置,同时预留出默认的代码结构,方便大家在现有的代码 结构上进行功能调整。 同时加入了字体图标 Font Awesome 的 CDN。 HaoWa 主题导航介绍:  支持跨平台响应式  支持站内及站外搜索  支持...

    WordPress企业主题:focus-start通用响应式强大模板

    可在每个页面的底部加入自定义JS,无需修改主题文件 √ 文章缩略图: 将文章的特色图显示为缩略图,如果没有设置,则将文章的第 1张图片设为缩略图 √ 多设备支持: 响应式布局,支持电脑、Pad、手机以及各种...

    Wordpress文章资讯博客主题模板Dux主题V6.4.zip

    DUX主题6.4版本更新内容:新增百度收录功能,可选快速收录,...关闭优化古腾堡编辑器后台和前台的展示效果调整发布文章时的自定义模块默认 修复相关推荐和评论的标题字符在手机端被遮盖截断的问题删除百度熊掌号功能

    WordPress企业模板网站

    √ 自定义底部JavaScript:可在每个页面的底部加入自定义JS,无需修改主题文件 √ 文章缩略图:将文章的特色图显示为缩略图,如果没有设置,则将文章的第一张图片设为缩略图 √ 多设备支持:响应式布局,支持电脑...

    Wordpress 博客主题/模板 阿里百秀XIU主题 2.1最新版CMS高级主题

    XIU主题是一款清新扁平风格、13种颜色、多设备支持、SEO优化、各种提速优化的Wordpress主题. 功能展示 清新·扁平:前端展示小清新,扁平化设计风格 SEO优化:你能想到的各种SEO优化,这里都做到了 速度优化:排除你的...

    wordpress进阶教程(十七):创建自定义的注册页面

    原文使用的是自定义的页面模板,我们在文章结尾将讲述使用我们上一篇教程说到的自定义url重写功能来添加这样一个页面。 第一步:创建文件。 我们还是以默认的twenty ten主题为例,在主题文件夹下面创建一个custom-...

    WordPress主题Uigreat v1.5.1扁平风格博客主题模板下载

    WordPress主题Uigreat是一款设计简洁的模块化wordpress主题,时下最流行的就是这种模块化的布局了,简洁年轻的配色肯定能吸引一大批年轻的站长来使用。这款 Uigreat 主题由主题君模仿 优阁(UIGREAT)网开发,设计上自...

    Uigreat响应式网站平扁设计风格 WordPress模板

    自定义设置文章默认缩略图 首页、文章AJAX加载(上一页/下一页数字加载、AJAX加载) 丰富广告位(首页、列表页、侧边栏无限新增广告图) 注:此模板需安装以下插件方可正常使用: JOYtheme 推出的 WordPress 整合型...

    wordpress人文古风主题 v2.5.zip

    wordpress人文古风主题 更新日志: 1、更改日历旋转动画为更美观的。 2、移除底部随机图片,保留一张新增的荷花图片。 3、更改了背景的文字。...wordpress人文古风主题页面展示 相关阅读 同类推荐:站长常用源码

    WordPress 淘宝客主题模板Boke8_TaokeⅡ共享版

    刚修改完的 wordpress 淘宝客主题boke8_taoke,花了几天时间在之前的boke8_Reeoo主题上作了较大量的修改。 同时又对浏览器兼容问题和主题样式细节部分作了些修补,都改得“面目前非”了,而且较比之前的主题,现在...

    wordpress模板:大前端D8主题3.0版本 高级商业主题

    D8主题3.0版本更新如下: 修复 – 文章列表Ajax只加载一次; 修复 – 页面(新版)模版评论头像不显示; 修复 – 评论框表情时而显示错位; 修改 - 分享图标改成大号32px; 修改 - 移动端文章列表展示更简洁; 修改...

    WordPress多功能主题Cosy破解版模板

    WordPress多功能主题Cosy破解版,优化模板速度十分适合seo。  功能说明:  独创-海报式分享,解放设计师,轻松生成文章的海报。  分享到微信、微博、qq要快要好,更要有范!  3种文章列表设计,自定义选择 ...

    wordpress进阶教程(十八):创建自定义的登陆页面

    像上一篇教程,很多人不喜欢wordpress默认的注册页面,登陆页面也一样,这篇教程我们将创建一个自定义的登陆页面,你可以通过一个自定义页面模板来实现,也可以通过前面教程中提到的url重写来实现。 第一步:创建...

    Wordpress模板 大前端3.0源码

    本主题为更新的开心版dux3.0主题,默认需要PHP5.4或以上运行环境,如出现错误,自行切换PHP版本后刷新即可解决。不以空间或主机环境不支持为理由的退款。 DUX主题3.0版本更新内容: 全新的标签云(tags)页面 新增...

    【Modown6.1和谐版】WordPress主题+Erphpdown11.6插件+充值卡插件

    WordPress主题Modown6.1和谐版 + Erphpdown11.6插件+充值卡插件+第三方登陆插件+工单系统插件+公众号登插件 自适应响应式设计,兼容主流浏览器 网格样式与瀑布流样式任意切换 内置SEO优化 自带与主题UI完美兼容...

    WordPress主题模板最新柒比贰7b2Pro 5.2.0主题开心版

    WordPress主题模板最新柒比贰7b2Pro 5.2.0主题开心版 升级内容: 页面标题(也就是浏览器选项卡中显示的标题)标题连接符可以选择是否保留两边的空格,此处主要是其他主题切换到B2之后SEO的兼容问题,老b2用户可以...

    WordPress中获取所使用的模板的页面ID的简单方法

    默认情况 WordPress是使用主题目录下page.php来作为模板显示页面的,但是有时候我们需要不同的模板来显示页面,比如登录、注册和投稿页面等,这些页面跟普通的页面是有所区别,这时候WordPress提供了页面模板让...

    wordpress 全屏轮播的家居行业网站模板

    本主题可使用默认的相册,并将相册修改为滑块,使用之前,请先在后台 设置--媒体(http://www.semdv.com)中设置略所图和中等尺寸为654*400(高度可以自定义) 插件介绍:文件带有2款插件:duoshuo 和simple-custom-...

    WP主题:HotNewspro 2.4

    使用方法添加一个页面,选择“谷歌搜索”模板,最终搜索结果将显示在这个页面中,只需在主题设置中输入搜索结果链接页面及自已的搜索ID即可,默认是我的。 附:Google自定义搜索操作方法 新增通栏友情链接模板,...

Global site tag (gtag.js) - Google Analytics