【基础篇】6,使用主循环调用显示日志摘要等数据

在前面的教程中,我们已经做出来了一个简单的头部,包括 CSS 文件的引入、文档的声明、添加网站标题副标题等。今天的教程,将要讲解如何以列表的方式显示博客中的文章。

认识 WordPress 的 主循环

我们想要达到的目的和效果,就是在博客的首页中,显示出来博客中现有的文章的标题、摘要、文章相关信息。通过前面的学习,我们了解到了 Wordpress 的函数机制,即使用函数调用数据库中的各种信息。可想而知,对于文章的标题、摘要、相关信息等,肯定也是通过函数来调用的。

但是现在就出来了一个问题。这类的函数不同于其他的函数,例如调用网站标题的函数,它只会返回一个确定的值,那就是数据库中的博客标题。但是这些调用文章标题等信息的函数不同。因为每个博客的文章数据都有很多,如果我添加了一个调用文章主题的函数,那么系统会显示众多文章中的哪一篇文章的相关数据呢?

所以 WordPress 系统有一个主循环机制。主循环机制就是为了解决这个问题,我们把显示文章的 HTML 结构、调用相关内容的函数等,写进主循环中,执行后查看源文件会发现,写进主循环的内容,会被重复很多遍(具体显示多少,在后台进行配置),但是在原先调用函数的位置会把文章数据调用插入进去。

于是可以这样认识主循环:循环调用数据库中的每一篇文章,把定义在主循环的内容,复制一下,把当前循环到的文章的相应数据插入到调用函数中,完成这第一篇文章之后,就继续按照这个步骤循环下一篇文章。这样就形成了一个文章列表。

主循环的结构和用法

主循环的结构实际上就是一段简单的 PHP 判断和循环代码:

<?php if(have_posts()) : ?>
    <?php while(have_posts()) : the_post(); ?>
        主循环里面的循环内容以及各种数据调用函数
    <?php endwhile; ?>
<?php else: ?>
    文章调用出错的处理
<?php endif; ?>

上面的代码比较乱,因为保留了 PHP 的标签,现在我将它整理一下,仅仅保留 PHP 的语句:

if(have_posts()):
    while(have_posts()) : the_post();
        主循环里面的循环内容以及各种数据调用函数
    endwhile;
else:
    文章调用出错的处理
endif;

懂一点点编程基础的人,一看就可以看出来,这就是一个简单的 if 判断语句,里面有一个 while 循环语句,然后不断的循环调用文章数据。这里面有两个重要的函数:have_posts()the_post()

其实从名字中,就可以看出来,第一个函数是判断这个博客是否有符合调用条件的文章,使用 if 语句来判断,如果有符合条件的文章的时候,才会调用主循环来进行下一步的操作。如果没有的话,直接跳到后面进行错误处理。

在下面的 while 语句中,再次进行了测试,当有文章的时候,才进行循环。之后的 the_post() 函数,就是调用了当前循环到的文章数据,表示下面的代码,都会对这个当前循环到的文章数据,进行数据调用显示。

应用主循环输出文章的信息

上面介绍了主循环的原理和结构,下面就要应用到我们的主题 myTheme 中。在这个演示的主题中,要循环的结构有一个 class 属性 article,所以要在这里和它的父结构之间,插入这段主循环的起始代码。

在这个 class 为 article 的 div 元素的结尾,加上主循环的结束代码。

这样,就会把包裹在主循环中的数据重复显示。在之前设计主题的阶段,我添加了两个文章摘要,现在我已经把第一个使用主循环包裹起来了,所以第二个可以直接删掉了。下面我们要使用对应的数据调用函数,替换掉里面的演示数据。这里,我直接给出相应的函数,关于函数功能的解释,在后面说。

具体代码如下:

            <?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
                <div>
                    <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
                    <div><?php the_excerpt(); ?></div>
                    <div>作者 : <?php  the_author(); ?> 时间 : 20<?php the_time('y年m月d日') ?> 文章分类 : <?php the_category(', '); ?>
                     </div>
                </div>
                <?php endwhile; ?>
            <?php else: ?>
                <?php echo '系统没有找到相应的文章!!'; ?>
            <?php endif; ?>

将代码修改成这样之后,再打开我们的本地的 WordPress 就可以看到效果了:

如果在浏览器中随便输入几个参数,这样 WordPress 就无法查询到相应的文章。于是就出现错误信息。

上例中涉及的函数解析

the_permalink()

这个函数用来输出当前文章的 “固定链接”,输出的是链接地址。将其加入 a 中的 href 属性,即可创建跳转到本文内容的超链接。

the_title()

这个函数用来输出当前文章的 文章名称。可以配合上一个函数,做成超链接,点击打开相应文章。

the_excerpt()

这个函数用来输出当前文章的摘要信息。在 WordPress 后台编写文章的时候,是可以设置摘要内容的(你需要打开右上方的“显示选项”,启用摘要功能),它会显示当前文章的摘要。如果当前文章没有设置摘要,那么将会截取 前 55 个字符 作为摘要内容,并且在后面加上省略号。更加具体的用法,可以查看官方的文档。此外,这个函数可能会在某些版本中失效或者显示出全文,如果你遇到我说的这种情况,可以查看我之前写过的文章:解决 wp 首页无法显示摘要而显示全文的方法

the_author()

这个函数用来输出当前文章的作者名称。

the_category()

这个函数用来输出当前文章所在的分类目录。通常配合多个参数使用。在上面的代码中,添加了参数 ‘,’。功能是,当本文存在多个 分类目录 的时候,将使用 ‘,’ 来分割当前目录。如果想了解更多的参数,可以百度搜索,或者查看官方文档

the_time()

这个函数用来输出当前文章的发布时间。在上例中,使用了参数 ‘y 年 m 月 d 日’ 表示输出的信息格式为:XX 年 XX 月 XX 日。

本节课相关资源下载

myTheme(基础篇-6) 主题下载

本系列文章

  1. 开始执行的 wordpress 主题教程计划
  2. 【基础篇】1、学习制作主题之前的准备
  3. 【基础篇】2、WordPress 的主题机制
  4. 【基础篇】3、设计制作你的 HTML 主题文件
  5. 【基础篇】4、安装主题文件
  6. 【基础篇】5、制作主题的头部区域

网页编码就是那点事

编码一直是让新手头疼的问题,特别是 GBK、GB2312、UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚。但是编码又是那么重要,特别在网页这一块。如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了。此外除了乱码之外,还会出现一些其他问题(例如:IE6 的 CSS 加载问题)等等。潜行者 m 写出本文的目的,就是要彻底解释清楚这个编码问题!如果你遇到了类似的问题,那就要仔细的看看这篇文章。

ANSI、GBK、GB2312、UTF-8、GB18030 和 UNICODE

这几个编码关键词是比较常见的,虽然我把我们放在了一起说,但并不意味这这几个东西是平级的关系。本部分的内容,引用自网络略有修改,不知原文出处,故无法署名。

很久很久以前,有一群人,他们决定用 8 个可以开合的晶体管来组合成不同的状态,以表示世界上的万物,他们把这称为”字节”。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去,他们就把这机器称为”计算机”。

开始计算机只在美国用。八位的字节一共可以组合出 256(2 的 8 次方)种不同的状态。他们把其中的编号从 0 开始的 32 种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上 00×10, 终端就换行,遇上 0×07, 终端就向人们嘟嘟叫,例好遇上 0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些 0×20 以下的字节状态称为”控制码”。

他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第 127 号,这样计算机就可以用不同字节来存储英语的文字 了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

后来计算机发展越来越广泛,世界各国为了可以在计算机保存他们的文字,他们决定采用 127 号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了 最后一个状态 255。从 128 到 255 这一页的字符集被称”扩展字符集”。但是原有的编号方法,已经再也放不下更多的编码。

等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有 6000 多个常用汉字需要保存呢。于是国人就自主研发,把那些 127 号之后的奇异符号们直接取消掉。规定:一个小于 127 的字符的意义与原来相同,但两个大于 127 的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从 0xA1 用到 0xF7,后面一个字节(低字节)从 0xA1 到 0xFE,这样我们就可以组合出大约 7000 多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的”全角”字符,而原来在 127 号以下的那些就叫”半角”字符了。

中国人民看到这样很不错,于是就把这种汉字方案叫做 “GB2312″。GB2312 是对 ASCII 的中文扩展。

但是中国的汉字太多了,后来还是不够用,于是干脆不再要求低字节一定是 127 号之后的内码,只要第一个字节是大于 127 就固定表示这是一个汉字的开始,不管后面跟的是不是 扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近 20000 个新的汉字(包括繁体字)和符号。后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。

因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码。当时的中国人想让电脑显示汉字,就必须装上一个”汉字系统”,专门用来处理汉字的显示、输入的问题,装错了字符系统,显示就会乱了套。这怎么办?就在这时,一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。

UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是 16 位来统一表示所有的字符,对于 ascii 里的那些”半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的 8 位扩展为 16 位,而其他文化和语言的字符则全部重新统一编码。由于”半角”英文符号只需要用到低 8 位,所以其高 8 位永远是 0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。

但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与 UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从 UNICODE 编码和另一种编码进行转换,这种转换必须通过查表来进行。UNICODE 是用两个字节来表示为一个字符,他总共可以组合出 65535 不同的字符,这大概已经可以覆盖世界上所有文化的符号。

UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8 就是每次 8 个位传输数据,而 UTF16 就是每次 16 个位,只不过为了传输时的可靠性,从 UNICODE 到 UTF 时并不是直接的对应,而是要过一些算法和规则来转换。

看完这些,相信你对于这几个编码关系等,了解的比较清楚了吧。我再来简单的总结一下:

  • 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示 6000 多个常用汉字。
  • 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。
  • 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。
  • 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。
  • 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。
  • UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8 个位和 16 个位。
    于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。但是目前的电脑来看,硬盘都是白菜价,电脑性能也已经足够无视这点性能的消耗了。所以推荐所有的网页使用统一编码:UTF-8

关于记事本无法单独保存“联通”的问题

当你新建一个 文本文档 之后,在里面输入 “联通” 两个字,然后保存。当你再次打开的时候,原来输入的 “联通” 会变成两个乱码。

这个问题就是因为 GB2312 编码与 UTF8 编码产生了编码冲撞造成的。从网上引来一段从 UNICODE 到 UTF8 的转换规则:

UTF-8

0000 – 007F

0xxxxxxx

0080 – 07FF

110xxxxx 10xxxxxx

0800 – FFFF

1110xxxx 10xxxxxx 10xxxxxx
例如”汉”字的 Unicode 编码是 6C49。6C49 在 0800-FFFF 之间,所以要用 3 字节模板:1110xxxx 10xxxxxx 10xxxxxx。将 6C49 写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为 0110 110001 001001,依次代替模板中的 x,得到:1110-0110 10-110001 10-001001,即 E6 B1 89,这就是其 UTF8 的编码。

而当你新建一个文本文件时,记事本的编码默认是 ANSI, 如果你在 ANSI 的编码输入汉字,那么他实际就是 GB 系列的编码方式,在这种编码下,”联通”的内码是:

c1 1100 0001

aa 1010 1010

cd 1100 1101

a8 1010 1000

注意到了吗?第一二个字节、第三四个字节的起始部分的都是”110″和”10″,正好与 UTF8 规则里的两字节模板是一致的,于是再次打开记事本 时,记事本就误认为这是一个 UTF8 编码的文件,让我们把第一个字节的 110 和第二个字节的 10 去掉,我们就得到了”00001 101010″,再把各位对齐,补上前导的 0,就得到了”0000 0000 0110 1010″,不好意思,这是 UNICODE 的 006A,也就是小写的字母”j”,而之后的两字节用 UTF8 解码之后是 0368,这个字符什么也不是。这就 是只有”联通”两个字的文件没有办法在记事本里正常显示的原因。

由这个问题,可以发散出很多问题。比较常见的一个问题就是:我已经把文件保存成了 XX 编码,为什么每次打开,还是原来的 YY 编码?!原因就在于此,你虽然保存成了 XX 编码,但是系统识别的时候,却误识别为了 YY 编码,所以还是显示为 YY 编码。为了避免这个问题,微软公司弄出了一个叫 BOM 头的东西。

关于文件 BOM 头的问题

当使用类似 WINDOWS 自带的记事本等软件,在保存一个以 UTF-8 编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即 BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以 UTF-8 编码。这样就可以避免这个问题了。对于一般的文件,这样并不会产生什么麻烦。

这样做,也https://qxzm-cdn.sapi.work、包含或者引用这些文件时,会把BOM作为该文件开头正文 的一部分。根据嵌入式语言的特点,这https://qxzm-cdn.sapi.workpadding 设置为 0,也无法让整个网页紧贴浏览器顶部,因为在 html 一开头有这 3 个字符。如果你在网页中,发现了由未知的空白等,很有可能就是由于文件有 BOM 头造成的。遇到这种问题,把文件保存的时候,不要带有 BOM 头!

如何查看和修改某文档的编码

1,直接使用记事本查看和修改。我们可以用记事本打开文件,然后点击左上角的 “文件” =》“另存为”,这时候就会弹出一个保存的窗口。在下面选择好编码之后,点击保存就可以了。

但是这种方https://qxzm-cdn.sapi.work使用下面的方法。https://qxzm-cdn.sapi.work

2,使用其他文本编辑器(例如:notepad ++)来查看修改。几乎所有的成熟的文本编辑器(例如:Dreamweaver、Emeditor 等),都可以快速查看或修改文件编码。这一点尤其体现在 notepad++ 上面。

打开一个文https://qxzm-cdn.sapi.workhttps://qxzm-cdn.sapi.work

点击上面菜单栏中的 “encoding” 即可把当前文档转换成其他编码

IE6 的加载 CSS 文件 BUG

当 HTML 文件的编码 与想要加载 CSS 的文件不一致的时候,IE6 将无法读取 CSS 文件,即 HTML 文件没有样式。就本人的观察,这个问题从未在其他浏览器中出现过,只在 IE6 中出现过。只需要把 CSS 文件,保存成 HTML 文件的编码即可。

WordPress 迁移 SAE 完全操作攻略

最近终于算是忙完了大部分工作了,同时也有更多的时间来写写文章,或者做点其他的事情了。现在吃喝不愁,没有多少繁忙的事情,可以学学东西,做点东西,写点文章等等。同时,博客要提高文章质量,更新速度大约在两到三天左右。

SAE 是什么

在迁移 SAE 之前,有必要先简单的了解一下 SAE 是什么。SAE 的全称是 Sina App Engine,翻译过来就是 新浪应用平台。这个平台提供了一些方便开发的组件、优质高速的硬件等,方便开发者进行应用的开发。狭义的讲,就是一个网站空间,可以把网站放上去,但是和普通的虚拟主机、VPS 等又有很多不同的地方。在后面你会了解到。它的地址:http://sae.sina.com.cn

为什么要迁移 SAE

之所以迁移到 SAE 上,是因为 SAE 有以下几个优点。

  1. 硬件质量高,网站访问速度快。
  2. 专业,不用怕数据丢失或者服务商跑路。
  3. 按照你使用的资源进行收费,收费合理,性价比高。
    最看重的是 SAE 平台的稳定、高速和性价比,与原来的美国空间、香港空间相比,低价高质量。

开通 SAE

开通 SAE 只需要打开 SAE ,然后点击右上方的注册即可,它使用新浪微博作为账号。其中还要区分几个概念,包括安全邮箱、安全密码等等。此外,SAE 平台使用 SVN 的方式上传文件,它的使用要比传统的 FTP 上传方便简单,但是需要学习和适应,这点官方文档写的非常详细。你需要花费一点时间,查看一下他们的帮助文档,这些很简单,也不是本文要说的重点。帮助文档:http://sae.sina.com.cn/?m=devcenter

迁移 WordPress

本文的重点不是 SAE 的注册和开通,而是在于如何合理正确高效的把 WordPress 博客,从之前的主机中迁移到 SAE 中。

安装 WordPress 应用

SAE 之所以高速、稳定,是因为它限制了部分功能。例如:出于完全考虑,SAE 禁止了 I/O 读写操作,这样,就无法使用传统的函数,进行生成或者读取操作等。

所以,官方原版的 WordPress 是不能直接安装上去的,因为里面的一些功能(例如:在线安装主题)是 SAE 平台所不支持的。但是 WordPress 这么流行的系统,当然有团队修改里面的代码,把不支持的功能,进行改写做成了 WordPress for SAE 版本,同时还上架到 应用仓库 中,这样只需要点几下鼠标,就可以在你的应用空间中,安装上 WordPress 。

1,创建一个应用。登陆之后,在 我的应用 页面中,找到右上方的 “安装应用” 。会出现如下的配置窗口。SAE 的应用安装,基于安装包(zip 格式)安装,可以直接填写网上的安装包,也可以本地上传。

2,在 应用仓库 中,找到 WordPress for SAE 的安装包地址,可以把地址填写到上面的 安装应用 表单中。其实,也可以点击右上方的 “安装应用”,直接进行安装。

3,输入一个 二级域名 和 验证码 之后,点击创建,就会告诉你已经创建成功了。现在你就可以管理这个应用了。根据提示,进行应用的初始化,就是安装 WordPress 时配置安装信息。

配置完成之后,系统会提示你安装完成。WordPress 系统就算安装完成了。你可以进入后台看一下相关配置,这个版本的 WordPress 是比较老的 ,截止到本文写作时,版本为 3.2.1。所以在安装插件的时候,需要注意插件是否支持这个版本。其中内置了几个比较常用的插件以及三个主题。下面就要进行博客数据的迁移。

转移文章等数据

文章等数据的迁移是整个迁移工作中,最简单的一个步骤。很多文章写道需要把数据库里的数据导入等等,其实不用这么麻烦,使用 WordPress 内置的工具(导入、导出)即可完成。

  1. 首先在原先的博客中,点击 “工具” -》 “导出” ,选择 “全部内容” ,点击导出。会弹出一个 xml 文件的下载。这个文件就记录了你博客上面的文章、评论、页面等等数据。
  2. 在 SAE 的博客上面,点击 “工具” -》 “导入” ,选择列表中的 “WordPress”。然后上传这个 xml 文件,将作者名等修改一下即可。注意,不要勾选 “下载远程附件” 这个项目,因为 SAE 不支持 读写操作,所以选择这个会报错。
    这个时候,文章等数据迁移完毕,打开应用首页,你已经可以看到你的文章数据了。

配置后台网站信息与之前网站完全一致

采用上面这种方法,只能迁移文章、页面、评论等数据,而无法迁移原有 WordPress 的后台设置。所以我们要打开 SAE 上的 WordPress 后台中的 “设置” 标签,把下面的内容依次重新设置一下,把它们设置的和原先博客中设置的一样。

对于图片/网站附件的处理

数据迁移通常分为两种:内容迁移资源迁移。内容迁移很简单,上面已经完成。令人头痛的是资源迁移,即 图片资源、附件资源等。潜行者 m 搜寻了很多资料来解决这个资源迁移的问题。

1,直接使用 SVN 的方式,上传到原有博客的 upload 目录中。

这是最简单的一种方式,但是有很多问题。首先,SAE 的应用代码空间,只有 100M 大小。上面通常存放代码、基础的图片等资源,不适合存储附件等。潜行者 m 博客光图片资源以及超过 100M 大小,肯定无法使用 SVN 的方式上传到 代码空间。但是对于图片附件比较少的博客来说,可以直接使用这种方法。

2,使用 SAE 的 Storage 服务

Storage 服务,是 SAE 为应用提供的专门用于存储文件的空间。容量大,下载速度快。当你使用 WordPress for SAE 写文章上传附件的时候,会自动上传到这个空间中,然后进行调用。这就相当于外链的空间了。

所以我们首先要把 资源文件 上传到这个应用的 Storage 空间中,然后修改文章中对于资源的引用,把外链修改上。上传有两种方法:

第一种手动创建目录,然后依次上传。打开应用页面,在左下方找到 “Storage”,打开之后,点击 “管理” ,然后就可以创建目录、上传文件等操作。然后,将原来文章中的资源外链修改一下,Storage 空间的外链通常为 XXX-wordpress.stor.sinaapp.com 加上目录。其中 XXX 为你的应用名称。

第二种是使用工具上传。如果附件很多,上传的工作量可想而知。所以有人就写出了上传的程序。经过搜索,找到了一个工具 SAE Mutiple Uploads 0.2 。具体的介绍和使用说明,打开他们的官方教程好了,上面说的很详细了。但是我在操作的时候,不知道为什么,没有成功。工具显示上传成功,但是我在 Storage 空间中,并没有发现我上传的资源。提供一个思路,你可以尝试一下,说不定是我的人品问题。

补充(2012.10.22)信仰飘扬 提醒,可以使用 Cyberduck 这个软件方便进行 storage 空间的管理。**
**

3,使用第三方外链服务(又拍云/华为网盘等)

只有在迁移的时候,才感觉出来外链的重要性,因为无论怎么迁移,外链是不会变的。因此,我考虑将所有资源放在外链上,然后以后就用外链链接资源。据了解,免费的网盘有部分支持图片外链,例如华为等。收费的比较好的有又拍云。最后我选择了又拍云,购买了又拍云的服务。

又拍云具体的操作流程我就不多说了,速度非常快。上传资源之后,在网上偶然发现了 荒野无灯 写的又拍云上传插件:Hacklog Remote Attachment Upyun(又拍云版)。果断激动了一下,因为这个插件,可以让你上传文件的时候,自动上传到远程的又拍云服务器上,同时还有一个非常重要的功能,可以修改数据库,将数据库里面的原有的失效资源连接,自动修正成又拍云的外链。

但是安装用了一下,还是出错,问了一下灯哥,原来是这个版本太低了,出现了这个错误。所以这个方法就留给以后的人看了,等 SAE 上的 WordPress for SAE 升级之后,就能用了。

如果想要批量修改原有失效的资源连接,可能只有像荒野无灯写的插件那样,对数据库进行修改。否则只能一篇文章一篇文章的进行修改。如果你有更好的办法,希望能回复交流!

补充(2012.10.21):Denis 提供了一个解决这类问题的好方法,即使用插件 Search & Replace 批量对数据库里面的图片链接进行修改。

在 WordPress for SAE 中安装主题和插件

由于 SAE 禁止了读写操作,所以安装主题和插件,无法向以前那样,直接在后台进行上传或者远程安装。必须要通过 SVN 的方式上传。默认的安装了 WordPress for SAE 之后,并没有开启 SVN 服务,因为开启 SVN 服务,需要花费一些资源,所以要消耗一些云豆。我们在后台左侧找到 “代码管理” 然后点击 “创建 SVN 库” 就开启了 SVN 服务,之后根据 SAE 的说明文档使用即可。安装主题和插件,只需要把主题和插件复制到相应的目录,然后 SVN 上传一下即可,和使用 FTP 一样。但是要注意,主题和插件中的功能不能有 读写操作 等 SAE 不支持的功能,否则可能出现意外情况。

将域名解析到 SAE

现在文章等内容、图片等资源都已经迁移过来了。现在要检查一下迁移之后的网站和原先的网站还有什么地方不同。所有的地方都必须丝毫不差才可以。特别是 “固定链接” 等等,如果有不同,会导致收录等问题。

当你觉得完全相同,在迁移之后,就要把域名解析到 SAE 中。在管理后台找到左侧的 “应用管理” 打开之后,在下面会有独立域名设置。由于 SAE 比较特殊,所以它暂时不支持备案,如果你的域名是备案过的,那么需要填写备案表格,向 SAE 提交申请。如果你的域名没有备案,SAE 支持绑定到国外的合作伙伴那里,然后做一个跳转。比较简单,所以不再多说。

这两种方案区别很大,备案域名直接接入服务器,ping 值只有 50MS 左右,响应速度和 百度 差不多,下载速度也非常快。绑定到国外的未备案域名,通过香港节点访问,ping 值有 160 MS 左右,下载速度略慢,相当于高质量的香港空间,但是要消耗两倍的流量,也就是交两倍的钱。

转移之后的 SAE 优化

鉴于大部分的同学的网站都是没有备案的,但是要花两倍的钱,所以我们就要进行优化。优化的重点就是减少 SAE 流量的损耗。一般通过三个方法进行优化:

  1. 开启 gzip。开启 SAE 的 gzip 教程,请看这里:开启 SAE 的 Gzip 压缩为 WordPress 提速
  2. 压缩图片、CSS、JavaScript 等文件,尽量使用外链。
    完成这些步骤之后,可以尽量的避免系统资源的消耗,这样就可以节省云豆。同时,你还可以开发应用,进行开发者认证,这样每月都会送你一些云豆。如果你流量不大的话,这样几乎都成了免费的了。