很久都没有折腾过 WP 了,这次升级之前我一直都在用 2.3.2 的版本。每次进入后台,系统总提示我使用的 WordPress 2.3.2 不是最新版本,催促我升级。其实不是我不愿意升级,身处万恶的教育网,不能访问国外网,实在是无能为力呀。
终于,利用上个周末去女友那里的空闲时间,用 ADSL 下载了最新版的 WP,升级到了 2.5-RC1。升级过程很顺利,升级后的感觉也很不错,所有我正在使用的插件升级到最新版后均能正常工作。
WP2.5 最大的改动就是后台了,导航和之前的版本相比变化很大,需要一段时间来适应。配色以淡蓝色为主,比较清新,Jiang说2.5的后台有两种配色方案可以选择,不过我没有找到在哪里设置。WP 2.5 中我最满意的就是一键升级插件功能了,我用教育网,那些插件的主页几乎都无法访问,所以每次升级都是个问题。现在方便多了,新的插件管理中只需要输入 ftp 的主机名和密码就可以一键升级了。
WP2.5 中还集成了 Gravatar 的头像服务。原来我一直在用 MyAvatars 这个插件,它使用的是 MyBlogLog.com 的头像服务,现在既然有了原生的头像,就可以停掉这个了。要显示 Gravatar 的头像,只需要在评论模板(comments.php)中适当的位置加入这行代码即可:
<?php if (function_exists(’get_avatar’)) { echo get_avatar(get_comment_author_email(),’32′); } ?>
其中第二个参数 32 表示了输出的头像的大小,即 32px * 32px 的。
另外我又启用了一个新的插件,叫 Wordpress Thread Comment ,它可以改变传统的 WP 评论模式,允许嵌套回复评论,效果很不错,并且可以和我正在使用的 AJAX Edit Comments 一起使用,欢迎朋友们留言测试。非常感谢这款插件的作者偶爱偶家。只是现在 Ajax 回复评论还有些问题(禁用掉 AJAX Edit Comments 也不行),可能是我的评论页面不够标准,我得再研究研究。
今天看到 Wordpress2.3.2 正式版发布了,2.3.2主要更新如下(来自 我爱水煮鱼):
这个新版本更正了之前版本中的7处bug,其中一个比较严重的会泄漏你的草稿文档的bug。同时,2.3.2还更正了一些可能会泄漏你的数据库表结构的错误信息,并限制和停止了在 XML-RPC 和 APP 进行过程中的一些信息泄漏。
可以看出这一次发布的新版本更新比较少,更正的bug和错误基本都集中在信息泄漏这一环节。
一个比较实用的更新是,在 2.3.2 版本中,你可以在 wp-content/db-error.php 中自定义数据库连接错误的信息。当 WP 连接数据库出现错误时,将会采用这个自定义错误信息取代默认的错误信息。
既然涉及到安全问题,当然毫不犹豫的升级啦。相对于 WP2.3.1,2.3.2修改了以下16个文件,2.3.1版本的用户只需要更新这16个文件即可完成升级:(来自 WordPress trac)
- tags/2.3.2/wp-includes/query.php
- tags/2.3.2/wp-includes/wp-db.php
- tags/2.3.2/wp-includes/formatting.php
- tags/2.3.2/wp-includes/taxonomy.php
- tags/2.3.2/wp-includes/post.php
- tags/2.3.2/wp-includes/version.php
- tags/2.3.2/wp-includes/pluggable.php
- tags/2.3.2/wp-includes/functions.php
- tags/2.3.2/wp-app.php
- tags/2.3.2/xmlrpc.php
- tags/2.3.2/wp-mail.php
- tags/2.3.2/wp-settings.php
- tags/2.3.2/wp-admin/includes/file.php
- tags/2.3.2/wp-admin/admin.php
- tags/2.3.2/wp-admin/setup-config.php
- tags/2.3.2/wp-admin/install.php
WordPress2.3.1 简体中文版下载地址:http://code.google.com/p/wpcn/downloads/list。
这些天又捣鼓了一下 blog,为了使我的首页(www.helloxudan.net)通过 W3C 的 XHTML 验证。我个人还是很注重 Web 标准的,以前验证 blog 首页的时候没有通过,虽然我不能算是一个完美主义者,但是 blog 上一直运行着有错误的代码,我觉得心里很不舒服,于是这两天抽了点时间做了一些修改,基本解决了问题。
其实绝大多数 Wordpress 主题在原始状态都是通过了 XHTML 验证的,但是我们在使用的时候会在 blog 中添加很多新的东西,比如日志、图片、各种插件以及各种 widget 等,或者喜欢 DIY 的朋友会对主题做一些小小的修改来实现自己理想中的效果。这些因素都有可能使原来通过验证的主题出现一些 XHTML 错误,我主要就是解决了这个问题。
一个符合标准的 XHTML 文档有几点需要注意,这也是从 HTML 到 XHTML 主要的改变:
- 所有的 XHTML 标签都必须有一个相应的结束标记,标签必须闭合最容易被忽略的就是那些不成对出现的标签,例如 <img />,<input /> 等,最后一定要加一个“/”来闭合标签。
- 所有标签的元素和属性的名字都必须使用小写
- 所有的XML标记都必须合理嵌套
- 所有的属性必须都用引号”"括起来
- 把所有<和&特殊符号用编码表示
XHTML 验证中的常见错误:
- required attribute X not specified:标签中缺少必须的属性。最常见的就是缺少 <img> 标签中的 alt=”…” 属性和 <script> 标签中的 type=”…” 属性。顺便发个牢骚, 阿里妈妈提供的广告代码中竟然有一行 text/javascript 没有加引号……
- end tag for X omitted, but OMITTAG NO was specified:标签没有关闭,也就是前面的第一条中提到的。
- XML Parsing Error,常见的主要有这两种错误:Opening and ending tag mismatch,标签的不合理嵌套;EntityRef: expecting ‘;’,一般都是由于在链接地址中出现了“&”字符,解决办法是把“&”替换为“&”,前面最后一条提到的。
对于中含有 flash 的页面,由于一般都是用 <embed> 或者 <object> 标签,而这两个标签并不是标准的 XHTML 标签,所以就会无法通过验证,解决的办法就是使用 SWFobject 通过 javascript 操作 flash。不过这个办法比较麻烦,我认为不适合对出现在 blog 日志中的 flash 使用,所以如果我的日志中包含有 flash 的话(主要就是视频了),是通过不了验证的,呵呵。
哦,对了,XHTML 验证的地址是:http://validator.w3.org/ ,感兴趣的朋友也可以去验证一下。如果没有通过,千万不要被那几十个甚至几百个错误给吓住了,因为很多错误都是级联产生的,当你解决了一个前面的一个错误之后,也许后面的错误也会消失很多。
Wordpress 的执行效率一直为人们所不满,我也觉得这是 Wordpress 的唯一比较明显的缺点。我不怎么懂 PHP,对于 Wordpress 的底层结构和数据库查询操作也不很了解,但是,我可以通过修改 Wordpress 的主题(或者叫模版)来实现一些 WP 的优化。本文参考了博客学堂的《Wordpress性能优化入门》,适用于 WP 新手,高手请略过。
WP 模板的设计者一般都会在模板中大量使用 WP 提供的函数来兼容每个用户,但对于我们用户来说,完全没有必要这样,可以通过修改模板,把这些函数更改为静态的内容。从而既减少了页面生成时间,又降低了服务器的负担,何乐而不为?
从头到脚修改,先看 header.php,不出意外的话,一般的模板 <head> 中都会有以下代码:
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
页面的编码我们一般都使用 UTF-8,所以,以许许如生为例,我可以把它改为对应的如下静态 HTML 代码:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="http://www.helloxudan.net/wp-content/themes/coolblue/style.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="许许如生 RSS Feed" href="http://feed.helloxudan.net" />
<link rel="pingback" href="http://www.helloxudan.net/xmlrpc.php" />
当然,也可以把 <div id=”header”> 中的
<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
修改为:
<h1><a href="http://www.helloxudan.net">许许如生</a></h1>
至于 description 中的内容,如果你经常改动的话不建议改为静态。
然后是 index.php,这里的内容一般都是动态的,不需要做什么改动。如果你的页面中需要显示作者的名字(<?php the_author(); ?>),可以直接替换为名字,可能也需要在 single.php 中做同样的修改。
下面是 sidebar.php,如果你和我一样喜欢修改 sidebar.php 文件来调整侧栏的话,可以直接把 php 中的打印语句直接修改为内容。例如:<h2><?php _e(’Categories’); ?></h2> 可以直接改为 <h2>Categories</h2> 。每个人的侧栏都不相同,其他的地方就根据自己的需要修改了。
footer.php 中,如果出现了 blog 的名字(<?php bloginfo(’name’); ?>),RSS 地址(<?php bloginfo(’rss2_url’); ?>)等,也都可以替换为相应的静态内容。
到这里,WP 模板优化已经基本完成了,我已经把大部分能修改为静态的内容都修改了,再进一步就要动用静态化插件了。WP 的优化是一项比较复杂的任务,优化模板只是很小的一部分,继续学习高深的东西吧。
Wordpress2.3 对 tag 的支持是它的重要新特性之一,这个特性可以使 wordpress2.3 成为 wordpress 历史上一个具有里程碑意义的版本。
但是我在使用 tag 的时候遇到了一些问题:tag 云和 tag 管理。
1、tag 云。
我们都知道使用<?php wp_tag_cloud(); ?>这个函数来调用 tag 云,但是我发现我的 tag 云中的 tag 数目很少,后来查了一些资料解决了这个问题。
<?php wp_tag_cloud(); ?>函数是通过几个参数来控制它的输出形式的,这些参数是:
- smallest——设定 tag cloud输出的最小字号,默认值为‘8’。
- largest——设定 tag cloud输出的最大字号,默认值为‘22’。
- unit——设定 tag cloud输出字号的单位,默认值为‘pt’。
- number——设定 tag cloud输出 tag 的数量,默认值为‘45’。
- format——参数‘Flat’将会以平铺的形式输出 tag 并且用空格将 tag 分隔开;参数‘List’将会输出一组无序的 tag 列表;参数‘Array’将允许你定义一组 tag 排列;默认值为‘Flat’。
- orderby——将会以‘name’或‘count’对 tag 进行排列,默认值为‘name’。
- order——定义 tag 以‘ASC’升序或‘DESC’除序进行排列,默认值为‘ASC’。
number 的默认值是45,所以 tag 没有能够全部显示出来,这就是原因所在。修改 tag 云的调用函数为<?php wp_tag_cloud(’number=200′); ?>就可以显示200个 tag 了。参数之间使用“&”连接。例如:<?php wp_tag_cloud(’number=200&order=DESC’); ?>可以用降序的方式显示200个 tag。
2、tag 管理。
不知道为什么 wordpress 的开发团队没有开发 tag 管理功能,想要删除一个 tag 只能在文章编辑中删除,如果这个 tag 被多篇文章所用,那就更麻烦了。因此,很需要一个有 UTW 那样的 tag 管理功能的插件。
我推荐使用 Tag Managing Thing,这是 UTW 的作者为 WP2.3 开发的一个 tag 管理插件。它可以对 tag 进行删除、分开或者合并操作,并且可以为 tag 编辑一个缩略名,就像 WP 每篇文章的永久链接一样,这对于中文 tag 来说是一个很实用的功能。
@2007-12-10 更新:现在使用 Simple Tags 作为 tag 管理插件,该插件的作者是原 simple tagging 插件的作者,simple tags 包含 tag 管理,相关文章,feed 相关文章,彩色 tag 云等强大的功能,强烈推荐使用。