admin 管理员组

文章数量: 1086019


2023年12月22日发(作者:disp matlab)

超详细WordPress 主题教程:从零开始制作

创建 WordPress 主题所需的工具和准备

从零开始制作 WordPress 主题其实不难,只要你从现在开始认真阅读这个教程,一步一步认真学习,你就会成为一个 WordPress 主题制作高手。至少你会修改现有主题。

网络上已经有很多关于制作 WordPress 主题的教程,并且 WordPress 官方网站上也有指导文章。但是当你不懂这方面的术语的话,这些教程可能不一定会帮助你,甚至还会误导你,所以这个教程会真正从零开始教你如何创建 WordPress 主题。

创建 WordPress 主题所需的工具和准备

开始真正制作主题之前,你需要使用到下面这些工具:

为了测试方便和快速,你首先需要在本地安装 WordPress,至于如何在

Windows 系统上安装 WordPress,你可以参考这篇日志:在 WordPress 本地安装 WordPress。

如果由于某种原因不能在本地安装 WordPress,那么你也可以的服务器上安装一个测试版的 WordPress。这个时候你必须要有一个支持 WordPress

主机的服务器,一般我使用 LAMP 主机(Linux+Apache+MySQL+PHP)主机,Win+IIS 主机可能会有很多问题,调试也比较麻烦,而 LAMP 主机,从我个人使用经验来说,我推荐 (MT) Media Temple 主机。

代码编辑工具,如 NotePad++ 或者 Vim 都可以,主要是适合自己个人使用习惯。

FTP 工具,用于上传主题到服务器上测试,这方面的工具很多,如

Filezilla,SmartFTP 等,如果你先安装软件麻烦(对啊,现在是云计算时代,谁还装软件),你也可以安装 Firefox 的 FTP 扩展,Fireftp,直接在 Firefox 中上传文件到服务器上。

XHTML 验证器和 CSS 验证器。你将需要这些工具去验证你的主题是否符合 XHTML 和 CSS 标准,并且可以使用它查出奇正错误的地方。

这篇就介绍到这里,主要介绍了制作 WordPress 主题所需的工具和应该做哪些准备,下面就开始要了解和开始制作 WordPress 主题。

#1:介绍

基本规则:

专业术语:

层式结构:

1

WordPress 主题教程 #1:介绍是从零开始创建 WordPress 主题系列教程 的第一篇。

从零开始制作 WordPress 主题的教程不会一次就教会你所有的东西,那样也是不可能的,这个教程也不是 WordPress 主题制作的参考,我所做的是一步一步从零开始教你如何制作 WordPress 主题,所以一定要耐心。

所以这一篇介绍首先是 WordPress 主题制作的一个最基本的介绍。这里会涉及到 HTML 和 WordPress 的基本规则,一些专业术语,以及 WordPress 主题的层式结。这些概念是很重要的,在接下来教程的很多地方都会涉及到,所以开始之前一定要搞清楚。

基本规则:

规则 #1:以正确顺序关闭所有 HTML 标签。

在上图中在错误关闭标签的演示中,关闭的 ul 标签是不按次序的。

每个 HTML 标签都是在 < 和 > 中,如果有斜线 /,则说明这个标签是结束标签,没有则是开始标签。如:<> 是开始标签,而 是结束标签。

在上面的例子中,使用 ul(无序列表)li (列表元素)标签。注意 li 的开始和结束标签在 ul 的开始和结束标签的里面,这就是标签正确嵌套方式。

规则 #2:每个主题至少要有这两个文件 – 和 。 告诉主题中所有的元素如何布局, 则告诉主题中所2

有的元素该如何展示和样式。下面是一个完整的主题含有的文件列表(现在我们不用详细了解这个列表每个文件的意思,有个这样的印象就可以了):

o

o

o

o

o

o

o

o

o

o

o

o

o

专业术语:

Template(模板) — 其实就是一个代码集,主题中很多地方会利用到这个代码集,所以把它们整合成一个模板,这样就就不必一遍遍输入这些重复代码。

Template file(模板文件) — 一个包含一个或者多个代码集(模板)文件。每个主题是由多个模板文件组成的,如:,, 等等。

Theme(主题)或者 WordPress theme(WordPress 主题) — 所有你正在使用的文件:文本,图像,代码等等。注意: WordPress theme(主题)和 WordPress template(s)(模板)是两个不同的东西,尽管有些人认为他们一样。

Post(日志) — 现在你读的就是一篇日志。此外,它是你 blog 的一个简单的条目,如:一个页面或者一篇日记。

Page(静态页面) — 一种特殊的 post,它不是以分类组织的。它有别于你其他的日志。注意:在 WordPress,page(页面)和 Page(静态页面)是两种不同的东西。

层式结构:

下图就是 WordPress 的层式结果,它简单的向你展示,一旦你主题中的某个文件丢失了,WordPress 主题系统将会寻找什么模板文件来代替。这里列出了 6 个文件而不是完整的 13 个,因为这 6 个是相对更重要一些,不过在接下来的教程中,余下的文件也都涉及到。

3

我们可以通过上面这张图的所处位置知道各个主题文件的重要性,越靠左越重要。

这里可能大家有个疑问,为什么会存在 WordPress 模板文件的层式结构,或者说是重要性级别呢?因为 WordPress 利用这个层式结构去寻找相应的模板文件显示页面,并且在相应的文件丢失之后如何处理。

如果 模板文件(用来显示存档页面)丢失了,那么 WordPress 将会使用 来控制存档页面如何显示。

如果 模板文件丢失了呢,哪个模板文件它会去寻找用来显示单一日志呢?它会寻找 。

WordPress

#2:模板文件和模板

Header 模板文件:

Index 模板文件:

Sidebar 模板文件

Footer 模板文件:

模板文件(template files)和模板(template)是从零开始创建 WordPress 主题系列教程的第二篇。开始之前,你要确保你已经看过WordPress 主题教程 #1:介绍,否则你将无法理解在教程 #2 中使用的名词。

在WordPress 主题教程 #1:介绍中,我们已经学过了 WordPress 的两条基本规则和术语,而这篇将会深入讲解模板文件,模板,以及每个页面的结构。

4

WordPress 博客的每个页面是由多个模板文件组成的,下面是首页的例子:

在上图中,我们可以看出主题的 是由 4 个模板文件组成:

,, 和 。

Header 模板文件:

通常在这个文件中包含博客的标题(title)和描述(description)。而且它们通常在整个博客中都是一样的。

Index 模板文件:

这个模板文件包含你的日志的标题,日志的内容(就是每篇日志的文本和图片)和日志的元数据 (元数据是每篇日志的额外信息,如作者是谁,日志发布的时间,在哪个分类下,有多少留言等等)。

5

Sidebar 模板文件

这个模板文件主要用于控制博客的页面列表,类别列表,存档列表,友情链接列表和其他一些列表。

6

Footer 模板文件:

像 模板文件一样, 通常不会因为页面的改变而改变,你可以在这里放置任何东西,但是通常是版权信息。

现在让我解释为什么把上面图片中的 所在的区域标为红色的。引文这块区域是会根据不同类型的页面而发生变化。

如果你在单一日志页面,这时候页面将会包含这四个模板文件:,, 和 footer。

7

#3:开始

第1步:打开 XAMPP 控制面板。

第2步:创建你的主题文件夹。

第3步:创建 和 文件。

第4步:创建 。

第5步:安装你的主题。

开始 是从零开始创建 WordPress 主题系列教程的第三篇。在介绍了

WordPress 主题的一些规则和术语,以及对 WordPress 模板和模板文件了解之后,现在是开始动手创建 WordPress 主题了的时候。

在这篇中,你将要着手开始写 WordPress 代码。这里建议在本地电脑上安装

WordPress,而不是安装到服务器上,因为本地更方便测试。

第1步:打开 XAMPP 控制面板。

8

在 XAMPP 文件夹(通常是:C:xampp),双击 将会弹出一个新的窗口。单击 Apache 和 MySQL 的启动按钮。如下图所示:

启动之后你看最小化窗口了。

第2步:创建你的主题文件夹。

转到你本地安装的 WordPress 主题文件夹,应该在xampp/htdocs/wordpress/wp-content/themes。创建一个新的文件夹,命名为

tutorial。

第3步:创建 和 文件。

打开记事本或者你选择的文本编辑器,把 这个文件中的所有内容都拷贝到你的记事本。保存为 。

9

打开另外一个记事本,直接保存为 到相同的文件夹下.

现在有两个文件了: 和 .

解释:

点击上面的图片查看大图。我会向你解释每个红色圆圈区域是什么意思。

Doctype – 指明你用哪种类型的代码来编码你的主题。这里你暂时还不用管它的详细意思。

是网页开始的地方。

是你的网页头部开始的地方。每个网页都有一个头部和主体。 是头部结束的地方。

是一个 PHP 函数,它能取得

文件所在的路径,这样主题就能使用 样式化页面上所有元素。任何时候,PHP 代码都是在 之间的。PHP 代码和 HTML 的 10

代码是不一样的,在 PHP 中, 是结束 PHP 代码。

所以:

bloginfo(’stylesheet_url’) – 调用 文件所在的路径

; – 停止调用函数。分号是用来结束一个 PHP 语句。

?> – 结束 PHP 代码

– 这是网页主体开始的地方。你能在网页上看到和读到的东西就是主体部分。你正在阅读的这个教程说明你在正在看当前这个网页的主体部分。

是网页主体结束的地方。

是网页结束的地方,没有东西在它的后面了。

第4步:创建 。

把 中所有的代码拷贝到你的 文件中。保存和关闭它。

第5步:安装你的主题。

打开浏览器。在地址栏输入输入 localhost/wordpress/。登录到你的 WordPress 管理后台。(这里能够看到 WordPress 登录页面是因为你在第1步的时候启动了 Xampp。否者的话,在这里你的浏览器会报找不到的错误。)

在管理界面下到 外观 (Apperance) 菜单并激活名为 Tutorial 的主题。

11

注意,你的主题文件没有屏幕缩略图,所以是空白的。一旦激活了,WordPress 就会告诉你激活信息。

现在打开一个新的浏览器或者标签页(如果你的浏览器支持标签页浏览)并在地址栏输入 localhost/wordpress。你应该得到一个空白页面,恩,完全空白的页面。如果不是,那你就是在错误的页面上了。

你的主题已经创建好了,这就是这个课程,下一步我们将讨论主题头部模板。

不要忘记关闭 Xampp。双击它在任务栏中小图标,点击 Apache 和 MySQL 的停止按钮,然后点击推出。

12

#4a:Header 模板

第1步:打开 XAMPP 和主题文件夹。

第2步:打开

第3步:调用博客标题

第4步:调用博客链接

前面我向你讲Header 模板是从零开始创建 WordPress 主题系列教程的第四篇。解了如何安装和启动 XAMPP,安装 WordPress 主题以及介绍了 PHP 语言的最基本语言,这篇我们将继续 PHP 并学习如何调用博客的标题和链接。

尽量输入所有代码而不是直接拷贝我给你的代码,这样可以让你尽量记住你所学到的的。

第1步:打开 XAMPP 和主题文件夹。

打开 Xampp,然后打开上次创建的主题文件夹,xampp/htdocs/wordpress/wp-content/themes/tutorial。我们应该看到上次创建的两个文件: 和 。

和 文件的内容应该和 和 一致。

第2步:打开

打开浏览器,转到 localhost/wordpress。因为上次安装了一个空白的主题,这时我们应该看到一个空白的页面。

返回主题文件夹并打开 文件。

到目前为止,我们已经打开了主题文件夹,浏览器和 文件。

第3步:调用博客标题

编辑 文件。在 和 这两个标签之间输入

bloginfo(‘name’); ?>,然后保存它。

13

返回到浏览器并刷新。这时候我们应该能够看到博客的标题。博客的标题是 Demo

Theme Development。

刚才发生什么了?

我们在网页的主体 (body) 之间加入了一行 PHP 代码到 。bloginfo()

是调用博客的信息的函数。其中参数 name 代表了它调用的是博客的标题。这个名字是在 option 页面中设置的 Weblog Title。

bloginfo(‘name’) – 调用博客信息,具体是博客的标题。

; – 结束调用博客信息

?> – 结束 PHP 代码

14

每次我们在 文件中增加或者更改任何东西之后,都可以保存,然后刷新页面去查看结果。

第4步:调用博客链接

调用了博客的标题之后,接下来就要把博客的标题放入超链接中,这时候需要一个 XHTML 标签。

返回 文件。

在同一行增加 。此时新行的代码应该是:

返回到浏览器,刷新,然后就可以看到博客的标题变成了链接。

现在它是一个链接,但是它没有链接到哪里。因为这个是博客的标题,我们应该让它链接到首页。为此,在 href=后的双引号中输入

保存,现在的代码应该是:

”>

返回到浏览器,刷新,当鼠标在链接上面的时候,浏览器的状态栏应该显示

localhost/wordpress

现在点击这个链接,它就会让我们返回首页。可能现在看到还是是相同的页面,但是用 # 或者 localhost/wordpress 作为链接地址是完全不一样的。在接下来的课程我们会学到到他们之间的不同。

刚才发生什么了?

我们把网站名字变成了链接,并使它链接到博客的主页。

15

bloginfo(‘url’) – 调用博客基本信息,具体是首页的的地址或者 URL

– 是一个用于添加链接的 XHTML 标签

– 链接的结束标签。否则网页将不知道哪里结束链接,这样会使得页面接下来的内容全部都变成链接。还记得规则 #1吗?正确关闭打开的所有标签。

href=”" – 超文本的简写。在引号之间就是它的值。

最终代码为:

”>

意思为:开始一个链接,链接的地址是博客的URL,用 PHP 函数 bloginfo(‘url’)

去调用这个地址或者URL。这个链接的文本是博客的标题并使用 PHP 函数

bloginfo(‘name’) 去调用博客的标题。最后结束链接。

这篇主要介绍了 WordPress 主题的 XHTML 代码,下一篇我们将继续 Header 模板。

#4b:Header 模板 2

第1步:开启 XAMPP 和打开

第2步:给博客的标题添加 H1 的标签

第3步:添加博客描述

第4步:DIV 标签

第5步:添加 Header DIV 标签

Header 模板 2是从零开始创建 WordPress 主题教程系列教程的第四篇第二部分。最后说一次,开始之前务必先读下前面的日志。这篇会完成 Herder 模板,并且开始介绍 DIV Box 模型。

第1步:开启 XAMPP 和打开

- 启动 Xampp

- 打开 Tutorial 的主题文件夹

- 打开浏览器,在地址栏输入 localhost/wordpress

- 返回主题文件夹,用记事本打开

第2步:给博客的标题添加 H1 的标签

现在, 的代码是:

”>

16

给它添加

标签。H1 标签意思是标题一。HTML 一共可以有7级标题:H1,H2,H3,H4,H5,H6。按照默认,H1是字体最大而H6是则最小。

添加之后的的 文件是:

”>

保存,返回浏览器并刷新。

第3步:添加博客描述

调用博客的描述,则在博客标题链接的下面输入以下代码:

现在变成了:

”>

保存并刷新浏览器,可以看到在博客标题链接的下面出现博客的描述,我们可以到 WordPress 管理后下修改博客的描述。

bloginfo(’description’) – 调用博客信息,这里的是描述

; – 停止调用

?> 结束 PHP 代码

第4步:DIV 标签

这步将介绍一个新的标签 — DIV。

给以上代码添加

标签:

保存,刷新浏览器,应该看到没有任何变化

可以把 DIV 想像成一个无形的盒子 (box)。在这里它把博客标题链接和博客描述从其他东西中区分开。如果没有对它进行样式化,它无非是单独的内容,以后 17

我们可以会用 这个文件去样式化这个无形的盒子。我们可以给 DIV

附上 边框(borders),填充(paddings), 页边空白(margins),背景颜色(background color),背景图片(background images),以及其他一些东东。

第5步:添加 Header DIV 标签

添加 id=”header” 到 DIV 标签,如下:

保存并刷新浏览器。

同样也没有改变,这里给 DIV 标签指定了 ID ,因为将会有更多的 DIV 标签或者无形的盒子,我们使用 ID 来区分!

#5:主循环

第1步:创建 container Div

第2步:输入主循环代码

第3步:调用日志标题

第4步:给日志标题加上链接

调用博客日志的主循环(The Loop)是 WordPress 中最重要的 PHP 代码集,几乎所有的页面都会用到它。这也是从零开始创建 WordPress 主题系列教程的第五篇。

在开始继续学习之前,我们先复习下到目前为止学到了什么?

到目前为止,我们已经学到::

规则,术语和 WordPress 主题的层式结构

每个页面有哪些部分组成

如何安装你的主题

如何调用博客的标题和把它做成一个链接

如何调用博客的描述和如何把 header 和其他部分分开

现在让我们开始第五篇:主循环(The Loop)

打开 Xampp,“tutorial”主题文件夹,浏览器,并且在浏览器中转到

localhost/wordpress,最后打开 文件。

下面应该是这时候 文件中的内容:

18

记住,为了学习这些代码,请尽量手工输入而不是拷贝和粘贴。

第1步:创建 container Div

在 header DIV 标签下添加一个 DIV 标签,并给它的 ID 赋值为 “container”,如下:

“container” 这个 DIV 标签是用把博客的主要内容和其他东西都区分开,比如 sidebar 和 footer 等。

第2步:输入主循环代码

在 Container 的 DIV 标签中添加如下代码:

19

这段代码就是 WordPress 中的主循环(The Loop)。在详细解释这些代码作用之前,我们来看下现在 所包含的代码:

你可能已经注意到Container DIV 中的每一行都被缩进了,这是为了更好的组织代码,更加利于阅读(使用 tab 健而不是空格键进行代码缩进,)。

刚才发生了什么?

if(have_posts()) – 检查博客是否有日志。

while(have_posts()) – 如果有日志,那么当博客有日志的时候,执行下面 the_post() 这个函数。

the_post() – 调用具体的日志来显示。

endwhile; – 遵照规则 #1,这里用于关闭 while()

endif; – 关闭 if()

注释:并不是所有的代码都需要两部分用来打开和关闭。有些代码能够自我关闭,这就解释了 have_posts() 和 the_post(); 这两个函数。因为

the_post(); 在 if() 和 while() 的外面,只需要分号去结束或者关闭。

第3步:调用日志标题

20

在前面的课程中,我们学习了使用 bloginfo('name') 去调用博客的标题。现在我们将学习在主循环(The Loop)中如何调用日志标题。

在 the_post(); ?> 的后面和 的前面输入

the_title(); ?>

保存 文件并刷新浏览器,这时候应该看到在博客描述的下方出现

Hello World ,默认安装 WordPress 之后,博客只有一篇日志。而我的测试的博客有多篇日志,所以这里有多个日志标题,而且因为我所用的日志标题是一样的,我也没有进行组织整理他们,所以它们看起来像很长的一行 Hello World。

第4步:给日志标题加上链接

21

把日志标题转变成日志标题链接。还记得怎样吧博客的标题转变成一个链接的?

两边增加

保存并刷新你的浏览器。现在日志的标题都变成了链接了,但是它们并没有指向哪里。为了使得每个标题都能指向正确的日志,我们需要把 # 替换为

the_permalink()。

“>

the_permalink() 是用来调用每篇日志地址的 PHP 函数。保存并刷新浏览器。

如果只有一个 Hello World 标题,把鼠标移到链接上面,观察你的浏览器底部的状态栏,他不再是 localhost/wordpress/#。

如果有不止一个的标题链接,我们将看到每个链接会链到不同的日志或者网页。但是我们的日志标题依然在同一行上面。为了分开它们,在日志标题链接代码的两边添加

标签。

”>

记住 H1 用作你的博客的标题,那是网页的标题。H2 被用作子标题。现在你的日志标题链接是子标题了,每一个都是一行。保存 文件并刷新浏览器,结果如下:

WordPress 主循环就介绍到这里,现在 文件内容应该是:

22

#5b:日志内容

第1步:使用 the_content() 函数显示日志内容

第2步:DIV 标签把博客日志的内容和标题区分开

日志内容是从零开始创建 WordPress 主题系列教程第五篇的第二部分,在这篇中,我们将展示如果显示博客日志的内容,并且使用一个 DIV 标签把博客日志的内容和日志的标题区分开。再次强调一次,上一篇关于 WordPress 主循环介绍的课程非常重要,你需要彻底明白之后才能继续学习。

下面开始这篇课程。首先还是打开 XAMPP,“tutorial”主题文件夹,浏览器并在浏览器地址栏输入:localhost/wordpress,最后打开 。

第1步:使用 the_content() 函数显示日志内容

在日志标题代码下面输入:

23

保存并刷新浏览器,现在在日志标题下面看到了一些文本:

刚才发生什么了?

我们使用了 PHP 函数 the_content() 调用了 日志的内容。现在,日志的内容只是一长行的文本,一直到窗口的右边,因为我们还没有样式化它。还记得最开始说到的 这个文件吗?我们以后用它来控制所有页面元素的显示和布局。

我们在 WordPress 后台输入多篇多篇测试日志,就可以看到多篇日志一起被显示的样子:

24

返回浏览器,点击”查看”选择“页面源代码”,就会弹出一个源代码窗口,如果你使用的是 Internet Explorer,那么弹出的是记事本。

我使用的是 Firefox浏览器,下面是在 FireFox 中显示的样子:

25

你注意到 文件和它的源代码之间的区别了吗?所有的文本,图像和其他东西等所有上图展示的东西都是通过 the_content() 这个函数调用来的。是不是很有用?注意这些代码是不依赖具体的 WordPress 主题,我们应该自己的这些文本和图片进行编码和样式化。

还有,有没有注意到我圈出的开启和关闭的P标签。他们都没有在 文件中出现,但是他们在源代码中出现了。

P 标签,为什么和如何使用?

为什么 – 当我们输入日志的时候,每次跳过一行就是一个段落,这个时候需要一个方法去展示?我们可以通过 P (段落,paragraph)标签,每个段落会在 P

标签之间,这就是为什么段落之间有行距的原因,

如何使用 – 非常容易,WordPress 模板系统会自动帮我们产生 P 标签。

第2步:DIV 标签把博客日志的内容和标题区分开

给 the_content() 两边添加 DIV 标签并给该 DIV 标签附上class=”entry”属性,如下:

你现在的 文件应该是:

26

保存并刷新浏览器,我们再次去查看源代码的话,就会发现每篇日志内容在

class=”entry” 的 DIV 标签中。

这样我们就很容易知道日志标题在哪里结束和日志内容在哪里开始,这样做也是以后使用 文件对它进行样式化做准备,通过 class 我们就可以准确定位到日志内容,样式化日志的内容而不影响页面上其他别的内容。

id 和 class之间有什么区别呢?

到目前为止,对于每个 DIV 标签,我们可以用 id 去命名它,如 id=”header”,那么id 和 class之间有什么区别呢?id 是唯一的而 class不是。如果从头到尾浏览源代码,你会发现只有一个 id="header" 和一个 id="container",但是有多个 class="entry"。

那么 header 和 container 可以用 class 去取代 id 吗?完全可以。

但是不能重复任何 id,比如,不能在同一页面上有两个 id="header" 。当你想一遍又一遍重新利用一些东西如日志的标题,那么请使用 class。

第3步:给日志的标题和内容添加 class=”post” 的 DIV 标签

用一个 DIV 标签把日志的标题和内容一起围住。并把这个 DIV 标签命名为:class=”post”。

(class 和 ID 的名字不是一定要严格和上面一样,可以把 class 和 ID 的名字设置任何你想要的名字,但是 post 和 entry 更加简洁明了,也更容易记。)

27

现在你的 文件为:

这个是经过缩进整理后的版本:

一般我们使用 tab 健而不是空格键产生缩进的。为什么进行要对代码进行缩进呢?实际上的代码不像我上面的屏幕截图一样有红色或者绿色的高亮显示,我们需要有个能够跟踪代码的方法,通过缩进就能更容易知道哪个

是结束哪个

保存并刷新浏览器,然后查看源代码中的代码。

为什么你要添加另外一个 DIV 标签去围住日志标题和日志内容?

增加这个 DIV class=”entry” 去把日志标题和日志内容区分开。而这个div

class=”post”是把当前日志和其他内容区分开。

28

#5c:日志元数据

日志元数据是从零开始创建 WordPress 主题系列教程的五篇的第三部分,今天我们将开始讲解日志的元数据(Postmetadata):日期(date),分类(categories),作者(author),评论数(number of comments),以及其他和日志有关系的信息。

同样请打开 XAMPP,主题文件夹,浏览器以及 文件。

先让我们复习下,现在的 文件应该有下面这些代码了:

批注 [雨林木风1]: 11-10

29

把 中的代码:

_e('by'); ?>

Comments »'); ?>

复制到 下面。(注意:在这部分,我们只需要复制和粘贴。当我制作 WordPress 主题的时候,我也只是复制和粘贴这部分代码。对于这部分代码,你不需要完全理解它,只要知道每部分干什么已经足够了。)

30

下面的屏幕截图是为了适应日志的大小而只裁剪了一部分,它主要你关注日志元数据代码的位置:

保存并刷新浏览器,现在应该是:

我们同样可以通过查看源代码来看日志元数据是怎样的?

详细解释:

– 所有的日志元数据都在一个 class=”postmetadata” 的段落标签中,因为我想把日志元数据和日志内容区分开。如果没有段落标签,日志元数据信息将在日志内容结束的地方继续,这样就没有任何间距去区别内容和日志元数据。

– : 是调用冒号“:”的代码;

把Filed under:放入中不是必须的,这样主要为了使得 Filed

under: 可翻译。如果你的主题不需要支持多语言,可以简单输入 Filed under:;

– the_category() 是用来调用日志的在的所有类别的 PHP 函数。如果你把 Filed under: 和 the_category() 放在一起,你可以得到:Filed under: Name of category 1, Name of category 2。the_category() 中的逗号是用来区分类别名。返回日志元数据的屏幕截图,我们就可以注意到在类别连接中的逗号;

31

– 和 Filed under:一样。如果你创建的是私人用的的主题, by 外面的 _e() 不是必须的。_e() 是用来创建可以翻译的主题,如果主题被来自不同国家的上百人使用的话,这是非常重要的。如果你是创建公共使用的主题,最后加上 _e() 以便你的主题可翻译化。

– 它是输出当前日志作者的名字。


– 如果你想要一个空行,又不想用段落标签来产生行间距,使用 BR。注意斜线 / 。这是能自我关闭的标签。

»’); ?> – 当弹出留言的功能激活的话,comments_popup_link() 调用一个弹出的留言窗口,如果没有激活,comments_popup_link() 则只是简单的显示留言列表。No Comments » 是在没有留言的时候显示的。1 Comment » 是用于当刚好只有1条留言时候。% Comments &187; 是用于当有多于一条留言的时候。比如:8 Comments »。百分号 % 用来显示数字。» 是用来显示一个双层箭头 »。

– 这个只有当我们以管理员或者作者身份登录的的时候才可见。 edit_post_link() 只是简单显示一个可以用来编辑当前日志的编辑链接,这样就可以让我们不必去管理界面搜寻该日志就能直接编辑。edit_post_link() 有三个参数。第一个是用来确定哪个词你将用在编辑链接的链接标题。如果你使用 Edit post,那么将显示 Edit post 而不是 Edit。第二个参数是用来显示在链接前面的字符,在这里是竖线 |,代码就是&124;。第三个参数是用于显示在编辑链接后面的字符,在这里没有使用。

登录 WordPress 之后,再返回到首页就可以看到“Edit”的链接和一条竖线。

#5d:Else,日志 ID,链接标题

第1步:Else

第2步:日志 ID

第3步:链接标题

Else,日志 ID,链接标题是从零开始创建 WordPress 主题系列教程的五篇的第四部分,这篇课程将讲解其他3个可以增加到日志中的元素:Else,post ID, 和

链接的 title 值。尽管它们是可选的,但是我们几乎可以在我每一个免费的主题中都能找到。

开始之前,不要忘记启动 Xampp。

第1步:Else

的下面输入以下代码:

32

大致如下:

保存刷新浏览器,但是应该注意到没有任何变化。我们返回教程 #5 — 主循环,去解释你刚才上面输入的是什么?

这里就是主循环的部分代码:

第一,if(have_posts()) 检查博客是否有日志,

第二,while(have_posts()) 执行 the_post() 去调用日志。而 Else 是当博客完全没有日志的时候执行的。 while() 和 endwhile; 应该嵌套在 if() 和

else :之间。 所以 应该在 之后。

现在你知道什么是 else 了吧,当没有任何日志或者当找不到任何日志的时候,告诉 WordPress 怎么处理,让 WordPress 显示错误信息 Not Found,或者其他任何你想要的东西。我们可以下载任一款免费主题,看一下它的 文件怎么写的。

在上面的例子中,Not Found 错误信息是在 之中。如我上一篇所说,这不是必需的,只是为了让主题可翻译。

整个信息和代码 Not Found 外面有

。这个同样也不是必需的。你可以简单使用:

Not Found

33

但是,给这个错误信息使用上

(子标题)标签能够使它更明显,让访问者注意到这个页面上没有任何东西。

那么

用来做什么的呢?恩,我们肯定不想你的错误信息在“茫茫蛮荒之地”之间滞留,对不?我们用
标签围住每篇日志。所以同样,尽管是错误信息不是真正的日志内容,但是我们其实可以把它当作日志来处理。

第2步:日志 ID

增加 id=”post-” 到

保存并刷新浏览器。然后 查看 > 页面源代码。现在我们会发现现在每篇日志都附加上了一个数字或者说是日志 ID。the_ID() 只是调用每篇日志的 ID。

为什么使用它呢?这是用来定制个别的日志的面貌。后面,当你使用

文件去告诉你的主题日志将看起像怎么样。如果通过给每篇日志附加唯一的 ID,你就可以针对单独的一篇日志进行样式化,使得它和其他日志看起来不一样。如果没有 ID,你将没有办法通过 文件使它和其他日志不一样。

同时把 class 和 id 赋给同一个 DIV 标签,可以吗?DIV 是标签,class 是一个属性,id 也是是一个属性。每个标签能拥有多个属性,如 DIV 就可以同时有

class 和 id这两个属性。(注释:id 是一个 XHTML 属性。the_ID() 是 PHP 函数。他们是不同的,)

第3步:链接标题

增加 title=”” 到日志的标题链接。

保存并刷新浏览器。然后再去查看源代码,查找任何日志的标题链接,如果日志的标题链接是 Hello World,那么他的左边应该有 title=”Hello World”。

title=”" 是 (链接)标签的另一个属性。在双引号中的是链接的描述。在这里,每篇日志的标题也是链接的描述。这就是为什么我们要再次使用

the_title() 这个 PHP 函数。

如果不使用 the_title() 作为 title=””的值,那么每篇日志标题链接将会有同样的描述。举个例子,如果用 title=”Click me” 取代 the_title(),每篇日志标题链接都将会用 Click me 作为描述。

34

返回页面。把鼠标移到任何一篇日志标题的链接上,描述信息将会弹出,这就是刚刚增加的。增加描述到链接是非常有用的,当你其他站点需要扫描你的博客的时候,如 ,每次你发表日志的时候,WordPress 通知 Technorati

和其他网站你的博客已经更新了。Technorati 然后就会来到你的博客,扫描它,并索引得到一个你日志的摘要,这其中会包括你链接标题的描述。

博客 » WordPress » WordPress 主题教程 #5e:日志导航链接

#5e:日志导航链接

日志导航链接是从零开始创建 WordPress 主题系列教程的第五篇的第五部,在绝大多数的 WordPress 博客的底部,都会有 下一页 (Next Page) 或者 上一页

(Previous Page) 这样的导航链接。我们可以通过 WordPress 的模板系统中的

posts_nav_link() 这个函数调用这些链接。

之间添加如下代码:

– 开始一个名为 navigation 的 DIV 标签。

posts_nav_link() – 调用后一页和前一页的链接。

; – 停止调用。

?> – 结束 PHP 代码

– 结束名为 navigation 的 DIV 标签。

效果如下:

35

保存并刷新,查看后一页或者前一页的链接。默认情况下,如果没有超过10篇日志的话,是不会显示导航链接。如果没有超过10篇日志,依然想看到导航链接,登录到管理界面,选择 Settings > Reading,然后把它设置为比所有日志少一篇。如,有6篇日志,就设置为5。

如何定制化 posts_nav_link():

和前面 postmetadata 课程中介绍的函数一样,我们也可以给这个函数3个参数,分别给链接的中间,前面和后面的设置字符,如下:

第1个参数是显示在后一页和前一页链接的中间。第2个参数显示在前面。第3个参数显示在后面。

这里是一个定制化 posts_nav_link() 的例子:

#6:侧边栏

第1步:创建 id 为 “sidebar” 的 DIV

第2步:给侧边栏的 DIV 添加无序列表

第3步:给这个无序列表添加原属

第4步:添加分类链接列表

侧边栏是从零开始创建 WordPress 主题系列教程的第六篇,这一篇我们主要讲解 WordPress 主题的侧边栏,让你很快掌握它的结构,并能编码和样式化它。

36

在开始侧边栏之前,这是现在 文件的样子。

第1步:创建 id 为 “sidebar” 的 DIV

首先让我们创建一个名字为 sidebar 的 DIV,这样可以把侧边栏中的所有东西都放入其中。在 container 的后面和 标签的前面输入以下代码:

第2步:给侧边栏的 DIV 添加无序列表

在新的 sidebar 的 DIV 标签中创建一个新的无序列表。

    – 开始无序列表

– 结束无序列表

第3步:给这个无序列表添加原属

增加一个列表元素(LI)到无序列表(UL)的中间并把一个子标题添加到这个列表中。

  • 37

    注意添加制表符到

  • 标签之前为了代码缩进。

  • – 开始列表元素

    – 开始子标题

    – 输出字符 Categories

    – 结束子标题

  • – 结束列表条目

    保存 文件并刷新浏览器。现在应该可以看到 Categories 子标题结构应该这样:

    子标题前面的小圆点指明这个子标题是在一个列表元素中(LI)。如果无序列表(UL)有两个列表元素,那么将有两个小点。

    第4步:添加分类链接列表

    在列表条目中添加下面代码:

    38

    这里是上面代码的解释:

      – 开始另一个无序列表

      – 调用分类链接列表

    – 结束无序列表

    保存并刷新浏览器。下面是分类链接列表的样子:

    默认的分类是 Uncategorized。如果你没有把日志发布到多个分类下面,那么你的列表链接列表应该是只有一个链接 Uncategorized。

    更进一步的解释:

    sort_column=name – 把分类按字符顺序排列

    optioncount=1 – 显示每个分类含有的日志数

    hierarchial=0 – 不按照层式结构显示子分类,这就解释了为什么子分类链接是列在列表中第一级。

    & – 每次增加另一个参数的时候,需在它之前要输入 & 用来把和现有的参数区分开。如 & 在 sort_column 和 optioncount之间。

    为什么不把 放入

  • 标签中呢?

    当我们使用 wp_list_cats() 这个函数调用链接列表函数的时候,它会自动附上一组

  • (列表条目)标签在每个链接的左右。查看页面源代码;可以看到每个连接的周围都已经有一组列表元素的标签。

    当处理侧边栏,无序列表和列表元素的时候,我们一定记得规则 #1:按顺序关闭所有标签。

    批注 [雨林木风2]: 11-12

    #6b:页面链接列表

    页面链接列表是从零开始创建 WordPress 主题系列教程的第六篇的第二部分,通过上一篇的学习,现在已经熟悉了侧边栏的结构,接下来我们将继续修改侧边栏,完成页面链接(Page-link)列表。当完成常规的侧边栏之后,我们将学习 39

    如何窗体化(widgetize)侧边栏。

    在分类链接上面添加以下代码:

    保存并刷新浏览器。效果如下所示:

    在默认情况下只有一个页面链接,就是 About 链接。我在我的本地的博客增加了很多多页面和子页面,这样我就有四级页面链接。

    查看页面源代码,我们可以看到 wp_list_pages() 产生的完整结构以及代码,如下:

    40

    第一,它把所有东西放入列表元素标签(LI),第二,它给列表一个名字,Pages。第三,它增加一个无序列表(UL)。第四,它把每个链接放入到

  • 标签之间。

    在上面的截图中,注意到“Pages”这个列表标题和“Categories”这个分类链接标题的大小不一样。

    如何使它们一致呢? 添加 ‘title_li=

    Pages

    ’ 到 wp_list_pages()

    作为参数。

    保存并刷新浏览器结果如下:

    41

    title_li 是一个用来定制化页面链接列表的标题的参数。

    Pages

    title_li 这个参数的值

    进一步定制化:

    在我的例子中,我有四级页面链接。由于布局或者设计的原因使得不能在侧边栏处理那么多级别的链接。为了限制显示列表的层数,增加了 depth 这个参数,并把它设置为 3:

    注意,我添加了 depth=3& 而不是仅仅 depth=3。这个 & 在这儿用于把 depth

    和 title_li 这两个参数区分开。(如果你只有一个 about 页面链接,你将不会注意有什么不同。)

    这里是我的列表的不同之处:(对比这个截图和上面的截图。)

    #6c:存档和链接列表

    第1步 – 增加存档链接列表。

    第2步:增加友情链接列表

    存档和链接列表是从零开始创建 WordPress 主题系列教程的第六篇的第三分,这篇将比较简单,讲解如何调用存档链接列表和友情链接(blogroll)列表。

    第1步 – 增加存档链接列表。

    在侧边栏区域的 Categories 列表下面输入以下代码:

    42

  • 复制之后检查下代码是否和下面一样:

    保存并刷新浏览器。结果如下所示:

    发生什么了?

    我们使用了 wp_get_arhives() 这个 PHP 函数,并用了 type 这个参数以及

    monthly 作为它的值,这样就按月调用存档链接列表。

  • – 开始列表元素

    – 开始子标题

    – 子标题文本

    – 结束子标题

      – 开始在存档链接这个无序列表

      – 按月调用存档列表链接,并把每个链接放入

    • 标签中。如果查看源代码,我43

    – 结束在子标题下的无序列表

  • – 结束列表元素

    第2步:增加友情链接列表

    在存档链接列表下输入以下代码:

    保存并刷新,结果如下:

    默认情况下,我的 blogroll 和你的是没有什么不同,这里是它在源代码中的样子:

    44

    上面的代码完全没有正确的被缩进,因为它们是由函数 get_links_list() 产生的,就像上一篇所学的函数 wp_list_pages() 产生的代码一样,但是它遵循规则 #1,按正确顺序关闭所有的东西。我已经圈出了元素和无序列表的标签让你看得更明显。

    #6d:搜索框和日历

    第1步:增加搜索框

    第2步:增加日历

    第3步:增加元数据

    搜索框和日历是从零开始创建 WordPress 主题系列教程的第六篇的第四部分,尽管这篇的题目是 搜索框(Search Form) 和 日历(Calendar),但是我同样也会介绍 元数据(Meta) 。这一篇我们会结束常规的侧边栏,然后将在下一篇将介绍如何窗体化(widgetize)化侧边栏。

    第1步:增加搜索框

    创建一个新文件,然后把该空白文件保存为 (当然是和

    在同一个文件夹下)。把 中的内容拷贝到

    在 文件,在侧边栏的最顶部输入以下代码:

  • 45

    保存并刷新浏览器,结果如下:

    刚才发什么了呢?

  • – 开始一个名字为 search 的列表元素,给它一个

    ID,这样就能够以后样式化它。

    46

    include() – 导入任何你想导入的文件。这和使用 WordPress 模板函数去调用模板文件是不同的,因为 include() 只是简单导入已经存在的文件。这里是调用在 文件中的代码。被导入的信息应该在一个博客上基本不会被改变的。

    TEMPLATEPATH – 主题文件夹的位置,这里是:wp-content/themes/tutorial

    ‘/’ – 文件名:/

    在 TEMPLATEPATH 和 “/” 中间的点把它们连接起来,所以最终得到:

    wp-content/themes/tutorial/

  • – 结束列表元素

    注意,搜索框不像分类,归档,页面或者 Blogroll 一样有子标题。当然如果你愿意,也可以给它一个子标题。

    第2步:增加日历

    在搜索框或者页面链接列表下面输入以下代码:

  • 保存并刷新浏览器,结果如下:

    47

    发生了什么?

  • – 开始一个 ID 为 “Calendar” 的列表元素

    – 开始一个子标题

    – 输出 Calendar 这个词

    – 关闭子标题

    get_calendar() – 使用 get_calendar() 这个 WP 函数调用日历

  • – 结束列表元素

    这样日历就完成了

    第3步:增加元数据

    在 get_links_list() 函数下输入以下代码:

  • 48

    保存并刷新浏览器,结果如下:

    (如果你没有登录 WordPress)

    (如果你已经登录)

    那么这是怎么回事呢?

    你开始一个列表元素(LI),跟着是一个子标题(H2) Meta。在子标题下,嵌入了一个无序列表(UL)。最后把每个链接都放入了列表元素中(LI)。

    wp_register() 这个函数能产生一组

  • 标签,如果你没有登陆,它显示注册(Register)链接,如果登录了,它显示的是 站点管理(Site Admin)的链接。

    wp_loginout() 不会产生列表元素标签,所以需要我们手工输入列表元素标签,当你没有登录的时候,得到的是 登录(Login) 的链接,当已经登录的时候,得到的是登出(Logout)链接。

    到目前为止,wp_meta() 没有做任何事情,他在网页上和源代码中都不会产生东西,现在不要考虑 wp_meta(),实际上你已经在使用它了。

    到此为止,我们已经完成 Meta 并最终完成了常规的侧边栏。

    #6e:窗体化侧边栏

    49


    本文标签: 日志 链接 主题 列表 标题

    更多相关文章

    分享88个搜索链接PHP源码,总有一款适合你

    1月前

    PHP搜索链接源码 分享88个搜索链接PHP源码&#xff0c;总有一款适合你 链接&#xff1a;https:pan.baidus1x7dPw_eySxlFxGV740ZpdA?pwd8888  提取码&

    android 开发种子文件,IT之家学院:如何制作种子文件和磁力链接

    1月前

    原标题&#xff1a;IT之家学院&#xff1a;如何制作种子文件和磁力链接 的原创投稿 随着科技和网络的发展&#xff0c;我们可能会想要把自己的文件&#xff0c;如视频、程序等&#xff0c;分

    Tomcat 在 Windows 本地启动日志中文乱码问题

    1月前

    文章目录 1. 问题描述2. 解决方法3. 系统编码3.1. 代码页简介3.2. 查看代码页3.3. 修改代码页3.4. 国标码关系 1. 问题描述 &#xff08;1&#xff09;在 Windows7 系统上安装了一个

    微信打开链接跳转手机浏览器(付代码)

    1月前

    本方法是在微信中&#xff0c;用户点击链接或者扫描二维码直接跳转到浏览器中打开指定页面&#xff0c;或者用扫描二维码的形式&#xff08;下面就具体说一下操作方法把。  用户在微信中操作&#xff0c;

    Python从配置文件读取http url链接地址并自动用浏览器打开链接

    1月前

    Python从配置文件读取http url链接地址并自动用浏览器打开链接 假设现在名为address.txt中每行每行的写入以下字符串&#xff1a; https:zhangphil.blog.csdnzhanghttp

    asp.net中winform窗体程序如何打开浏览器,如何打开链接?

    1月前

    有时候我们在做winform窗体应用程序的时候&#xff0c;也需要打开浏览器&#xff0c;这时候应该怎么做呢&#xff1f; 其实我们可以选  linkLabel 控件&#xff0c;双击控件添加单击事件

    Windows记录登录日志

    1月前

    有的时候&#xff0c;我们希望系统记录登录的日志&#xff0c;以便查看有无他人动过自己的电脑。 步骤 1.在windows中搜索并打开"组策略"。 2.点击计算机配置-->Windows设置

    苹果手机注册时显示链接服务器出现问题,苹果确认iphone密码,显示连接服务器出现问题,为什么...

    1月前

    原因可能是网络或者服务器本身问题&#xff0c;解决方法如下&#xff1a; 最好使用wifi连接&#xff0c;蜂窝数据网络连接较慢&#xff0c;进入后有时候会无法连接&#xff1b; 确认手机的

    Outlook技巧:如何插入可以用指定浏览器打开的链接

    1月前

    Outlook中的链接&#xff0c;有时直接点击无法打开&#xff0c;找本地Edge才能打开。如何让Url能够指定打开的浏览器呢&#xff1f; 插入链接时&#xff0c;直接加上前缀Microsoft

    Arc 浏览器内显示全链接

    1月前

    前言 arc浏览器 由于其优秀的UI和交互效果获得了一批忠实用户&#xff0c;其分享下载的营销方式抓住用户想尝新的事物。 用了好几个月后发现这个浏览器真的不错&#xff0c;方便的小窗方式&#xff0c;简单快

    Python 列表应用之“简易好友管理系统”

    1月前

    # 好友姓名管理系统"""介绍&#xff1a;如今的社交软件层出不穷&#xff0c;虽然功能千变万化&#xff0c;但都有好友姓名管理系统的基本功能&#xff0c;包括添加好友

    Word中,页眉-编辑页眉中,“链接到前一节页眉”呈灰色,不可点击?

    19天前

    解决方法&#xff1a; 依次点击&#xff1a;页面布局-分隔符-分节符-下一页&#xff0c;然后在页眉-编辑页眉中&#xff0c;“链接到前一节页眉”&#xff0c;就可以点击了。点击它&

    Windows 系统没有网络链接常见原因以及解决方案

    17天前

    在使用 Windows 电脑时&#xff0c;有时会遇到电脑显示已连接网络&#xff0c;但却无法访问 Internet 的情况&#xff0c;这可能是由多种原因导致的。以下简鹿办公将详细介绍一些常见原因及对应的解决

    使用符号链接,移动 Windows 系统盘的 NVIDIA 显卡驱动下载目录和 Windows 更新下载目录

    17天前

    系统盘&#xff08;通常为 C盘&#xff09;空间经常不够用是计算机用户常见的烦恼。造成这种情况的原因很可能是因为硬盘分区是手贱为系统盘分配的空间太小&#xff0c;而且其实用户并不是不想换大的硬盘&#x

    windows系统下,按照syslog协议,将客户端日志上传到服务器

    17天前

    windows系统下&#xff0c;按照syslog协议&#xff0c;将客户端日志上传到服务器 步骤&#xff1a; 1.准备工作&#xff0c;从syslog-win32网站上下载源代码压缩包&#

    【Python小工具系列】使用 Python 循环批量打开网页链接

    16天前

    &#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获

    【点击链接,自动下载安装APP,小米公司的坑】在浏览器中, 我们以为回退就能解决误点击。其实是不管用的。

    16天前

    2018-5-29&#xff0c;更新解释 不是西瓜视频的坑。 是小米手机&#xff0c;小米公司的坑&#xff0c;浏览器点击什么链接后&#xff0c;后台或下拉菜单中就自动开始了下载安装  APP。

    在UC浏览器打开链接唤醒app,假设没有安装该app,则跳转到appstore下载该应用

    16天前

    在UC浏览器打开链接唤醒app&#xff0c;假设没有安装该app&#xff0c;则跳转到appstore下载该应用 须要在project中设置例如以下&#xff1a; 1、打开project中的myapp-Info

    使用SecureCRT下载服务器日志到本地windows

    16天前

    无论是直接连接服务器还是通过连接跳板机登录服务器&#xff0c;下载日志都是通过一个命令&#xff0c;当然要在工具中设置下载路径&#xff1a; 如图&#xff0c;设置好下载日志的位置&#xff0

    C#写入错误信息到WINDOWS日志查看器中的应用程序日志

    15天前

    有时&#xff0c;有些错误信息无法写入程序本地的日志文件&#xff0c;例如写入本地日志文件的函数调用失败了&#xff0c;这种情况下&#xff0c;就需要将这次错误信息&#xff0c;记录到win

    发表评论

    全部评论 0
    暂无评论