Category Archives: WordPress

WordPress为何具有如此魅力

周末到清华参加了今年的WordCamp China,主要的目的是去仰慕一下年轻的WordPress创始人Matt,从1.5版本开始用WP写博以来,的确是看着它发展成了一个强大的系统,何况WordPress可是詹膑老师眼中比Google和Apple还酷的公司。

在我眼中,WP也是个很特别的产品,它拥有非常好的社区,无论是开发者社区还是粉丝社区。就以WordCamp为例,我相信到场的有不少并非IT从业人员的WP粉丝。作为一个开源产品,营造良好的社区氛围,建立一个生态系统至关重要,而WP是如何做到这一点的?

我在会议的间隙,问了Matt这个问题,不过他的回答非常的“Google”,他觉得关键是产品,只要产品好,其他的就纷至沓来,听起来与Google十大信条的第一条“Focus on the user and all else will follow”说的是一回事。虽然只是简单的一条原则,但要做起来却并不容易,你需要快速且有技巧地对用户的回馈作出反应,需要定期进行版本更新,需要让产品的基础架构能够适应一个广泛的开发者社区的需求,需要让产品对普通用户而言非常的方便易用而且好玩耐玩。

而维持一个开发者社区同样意味着很多的挑战,即使对WP也不例外,例如与Habari创始团队之间的争论,与插件开发人员之间关系的平衡,如何应对热心用户的功能要求等等。下次如果有机会的话,应该与Matt多交流一下的问题(明年?)。

不知道什么时候能够看到国内的一款软件也拥有这样的魅力,吸引到众多的热心开发人员和粉丝用户呢?

试用WordPress 2.0 Beta

WordPress2.0 Beta出来的消息已经有几天了,在中文Blog圈中似乎没什么人去尝鲜,不过这一版Wordpress的新特性很多都在WordPress.com中体现出来了,也的确没有太多能让人耳目一新的东西,除了一点,下文会提到。

在我搭建的一个没用过的WP上尝试升级到2.0 Beta2并简单试用,说几点试用感受:

1、升级还是一贯的比较简单:我直接将2.0的文件覆盖原来的WP文件,在尝试进入管理后台的时候,系统提示数据库需要升级,直接点upgrade就马上升级成功,可以正常进入后台,当然正确的做法应该是在上传文件后执行升级操作。这个Blog基本没有安装插件,对于使用插件很多的用户而言,可能在升级时会遇到兼容性的问题,不过从WP论坛上用户的反应来看大部分常见的插件都可以正常工作, 这里可以查到在WP2.0下可用的插件列表

2、整个后台管理界面都与Wordpress.com基本完全一样,包括整体的UI设计、所见即所得的编辑器(可在设置中改回原来的代码编辑器,也可以对于blog的每个作者单独控制)、独立的图片上传窗口,Ajax的使用,集成到Blog界面的预览方式等等,总之,如果你使用过Wordpress.com的话,新版的WP就与它没什么两样;

3、WP中默认的插件增加了Akismet数据库备份(WordPress Database Backup)两个插件,都是很有用的插件,如果你没有升级到2.0的话,我也建议你安装它们。Akismet是个反spam的插件,以我一个多月的使用经验来看,非常好用,现在我几乎需要再处理任何有关垃圾留言的事了,推荐没有用反垃圾插件的用户使用,不过比较麻烦的是,使用它之前你需要先有一个Wordpress.com的帐号,因为它需要使用到你的Wordpress.com帐号中的一个API Key。以前默认的插件中Markdown和textile1都被去掉了,这两个插件我反正是从来没用过。

4、权限控制更加友好,将原来的按数字从1-10的分级改为分成管理员(administrator)、编辑(editor)、作者(author)、参与者(contributor)和读者(subscriber)几个等级进行控制,这也是在Wordpress.com中也已经有的特性;

5、增强了导入功能,我感觉这是WP2.0最大的一个亮点。目前支持将Blogger.com中的文章直接导入(服务器需要支持Curl),以及通过RSS文件(需要符合RSS2.0规范)导入文章,我尝试了将WP以及MT搭建的系统的feed内容以及经过Feedburner及Feedsky烧录过的Feed保存成RSS文件,都在WP2.0中成功导入,只有个别出现在导入文章的最后多了一个]]>,以及出现部分文章发表时间的差异外,其余的似乎完全正常,包括分类都可以自动创建。根据WP的开发计划,从MT搭建的blog中直接导入也正在开发之中,看来以后Blog系统之间的搬家就会更是常事了。Update:hhalloyy在留言中指出WP1.5实际上已经带有导入功能,只是需要用户自己去修改php的参数,使用不太方便,2.0版将其集成到后台管理界面中进行导入。

根据这份长长的WP1.6(怎么还是1.6,呵呵)开发计划,WP还是很值得期待的。当然,现在的这个版本还不稳定,不建议大家在自己的Blog上尝试,除非搭建一个独立的测试环境。

微调Blog模板

今天对Blog模板作了两项微调:

1、以前在Blog中也使用过QuickSub提供的js来提供便捷的RSS订阅方式,但QuickSub的代码修改较多,换了新模板后就没有再添加这个Quicksub的功能,今天看到一个更为方便的解决办法,于是就在Blog上加上了这个功能,大家可以点击我的Blog侧边栏中的订阅信息按钮,或者直接点这里看效果(在RSS阅读器中无效,只能到blog中看效果)。具体的安装方法,可以看这里

2、在Blog的侧边栏添加几个公益项目的推广链接,包括微笑图书馆捐献时间分享快乐以及多背一公斤不过多背一公斤没有找到宣传推广的图标,原来的那个似乎失效了,所以只好加文字链接感谢scavin,添加了多背一公斤项目的图标。公益项目通过千千万万个Blogger进行推广的确是一种很不错的方式,可以利用Blog长尾的广告价值,相信很多Blogger也愿意在自己的blog上添加这些公益项目的推广链接。所以每个公益项目都应该设计好各种尺寸的推广图标,甚至准备好html代码,方便blogger们的链接推广,就像捐献时间项目这样

如果还有其他的公益项目希望我加链接进行宣传的话,也可以在后面留言给我。

另外,请Bolaa.com将我的Blog内容从你的站上删掉,我讨厌这种frame的方式。也曾经留言让曾雄杰将我的Blog从博粹中删除,不知道删了没有。

利用Flock注册WordPress.com

Flock让我期待了好一阵,昨天终于正式推出了。虽然与我之前了解到的信息略有差异,不过它集成del.icio.usFlickr和Blog的方式仍然让不少人觉得好用,WebleonAttaboy都有详细的使用评价,我就不赘述了。

Flock的推出还带来了一个额外的好处,就是不需要有邀请权就可以直接注册WordPress.com。下载安装后,在首页中选择“get yourself a blog”,就可以选择注册WordPrss.com,没有邀请权但又想使用WordPress.com的Blog服务的朋友可以用这个办法去注册了。

Firefox的怪毛病已解决

前两天还很郁闷为什么新装的Firefox为什么有那么多的小毛病,今天终于找到了问题所在,也证明了不是我的RPWT^_^。不过我也错怪了火狐,原来问题出在我升级后的防火墙的cookie控制上。

说来找到原因的过程也很巧,居然是从我Blog的一个问题上找到答案的。前几天在使用这个WordPress架构的Blog的时候就遇到一些怪现象,不能删除comment,不能激活插件,都是出来一个连接到WordPress Codex的页面让我Enable Sendding Referrers,但因为这几天始终不能进入Codex(大家能进吗?),也就没继续处理它。今天实在下定决心要找到答案,就用代理进入Codex,发现问题可能出在防火墙控制上,果然按照页面上的指示,顺利地解决问题。

联想到上次那些火狐的毛病可能也是防火墙造成的,马上修改设置,果然药到病除。上篇blog的留言中有人也与我同病相怜,del.icio.us的书签每次都要登录,建议也去检查一下防火墙的设置。

在你的Blog中添加反向链接工具

最近反向链接成了Blog圈中的热门话题,虽然现在的各种反向链接搜索工具都存在这样或者那样的问题(有空再写),但大家都公认反向链接是Blog所不同于普通网站,是blog搜索不同于普通搜索的一个重要方面。

Icerocket是个将重点转向Blog搜索领域的搜索引擎,对于Tag搜索和反向链接搜索都在做积极的研发。它们最近推出了一个新的服务,可以在你的Blog上直接显示反向链接搜索的结果,也就是Icerocket所说的Link Tracker服务。使用Link Tracker服务后就可以像我的Blog这样直接显示每篇文章被反向链接的数量。
Link Tracker

要在Blog上添加Icerocket的反向链接工具也很容易,只需要简单的三个步骤(你的Blog需要支持PHP),下面我以WordPress的Blog为例作简单说明。

1、在你所使用的WordPress主题的header.php中添加以下代码:
<script language=javascript src="http://blogs.icerocket.com/cit.js"></script>
2、从这里下载一个php文件放到你所使用的WordPress主题的目录下,应该是放到blog的根目录下;
3、在你的主题的index.php以及single.php文件的相关位置放上以下的代码:
<span id="blogcitation" link="< ?php the_permalink() ?>"><a href="http://blogs.icerocket.com/search?q=< ?php the_permalink() ?>">Linking Post</a></span>
如果你使用的不是WordPress,而是其他的Blog系统的话,只需要将其中的< ?php the_permalink() ?>替换成你的Blog系统的Blog永久链接的相关代码就可以了。

在Blog中添加一段technorati的代码也可以在Blog中实现直接点击进行反向链接的搜索,但Icerocket的这个服务则可以直接显示出搜索的结果,更为方便,而且似乎Icerocket的搜索结果比technorati更加丰富。

ps. 有时可能由于种种原因,会出现不能直接显示出搜索结果,而只显示“Linking Post”的情况,这时就需要点击才能搜索到反向链接。

Update:忘了写了,如果你的blog不支持php的话,也可以使用iframe的形式来实现这一功能,具体的做法可以参看这里,我就不详细说了。

WordPress快速留言插件Wordspew Ajax Shoutbox

窝子曾经写过一篇令人印象深刻的文章“互动性的尝试和想法:基于博客的个人门户续篇”,里面提到了多种能够提高blog互动性的小工具,包括投票箱、即时留言板、集成聊天工具等等。不过因为需要用到第三方服务商的服务,我总会有点担心因为服务中断造成blog页面下载困难等问题,所以我虽然觉得这种增加互动性的工具挺有用的,但也一直没有在blog上加上这些服务。

现在WordPress的用户只要通过一个插件就可以简单地实现即时留言板(shoutbox)功能了,而且这个插件使用了Ajax技术,可以实时显示留言内容,你也可以通过控制面板或者是修改CSS文件来自行定义颜色、外框等内容。安装后的效果可以参看我的blog主页的侧边栏(由于怀疑该插件对资源有一定影响,暂时拿下)(就是插件的默认效果,我没有作任何改动)。不过目前这个插件不支持Opera8,其余的浏览器都可以正常使用。

插件的安装也非常简单,将下载包中的install-live.php文件放到blog的根目录下,从浏览器打开这个文件,执行安装过程后,会在你的mysql数据库中添加相应的表,再将wordspew目录上传至WordPress插件目录,在控制界面激活插件,最后在你的WordPress模板相应的地方插入以下的php语句以及调整样式就可以了:< ?php jal_get_shoutbox(); ?>

(via Blogging Pro China)

PS. Blogging Pro China是海豚新建立的一个Blogging Pro的中文站点,主要提供有关WordPress的各类插件与主题信息,WordPress中文用户必读的网站:)。

升级WordPress解决RSS时间码问题

车东最近因为WordPress的RSS Feed的时间问题,好像比较郁闷,不但在5月底更新了这个最初写于4月11日的指出我的Blog因为中文化而出现RSS Feed时间码错误的帖子,而且今天还另外写了一篇文章,将错误的Feed时间比喻成标错生产时间的牛奶。不但如此,车东作为MT的用户,还实在忍不住到WordPress的支持论坛一口气回了五个帖子要求修正这个小bug。

RSS Feed时间码的错误的确是个很明显也很容易解决的小bug,其实在WordPress推出1.5.1版的时候,就已经解决了这个bug了。车东最近指出的几个基于WordPress而在Lilina聚合时出错的Blog恰恰都是使用WordPress1.5而没有升级的Blog。而在WordPress1.5.1中,生成Feed pubDate的代码已经可以从数据库中根据用户的时区设置获取时间了,同样,车东指出的中文本地化后Feed时间码因为翻译成中文而乱掉的bug也修复了。WordPress1.5的Feed时间码错误虽然也不是什么大问题,不过还是会让RSS的读者比较郁闷,就为这一点,你也值得将WordPress升级,何况WordPress的升级还是非常的简单。当然,如果实在不想升级,那么也很简单,参照我的这篇文章或者WordPress的官方修改方法自己改一下代码就可以了。

另外,WordPress从推出1.5.1后,因为bug与安全漏洞发布了两次更新版,现在的最新版本是1.5.1.2了。

WordPress 1.5.1 RSS Feed的一个bug

WordPress1.5.1发布后,不少人升级后都有一些小问题,像部分插件不兼容无法使用设为Private的文章无法正常隐藏等等,不过更大的bug在于升级到1.5.1后,WordPress的RSS Feed会出错(via)。

问题表现为:Feed不会输出本该输出的全部文章,而只会显示你当前新撰写的文章,而过了24小时后,Feed则会变为空白,没有任何的文章输出(ps.好像使用Feedburner烧过的feed没有问题)。子游提到1.5.1升级后又出了新的更新包。不过我今天重新下载升级后,这个bug还没有修复。

解决办法:
将根目录下wp-blog-header.php中的

if ( ($client_last_modified && $client_etag) ?
((strtotime($client_last_modified) >= strtotime($wp_last_modified)) && ($client_etag == $wp_etag)) :
((strtotime($client_last_modified) >= strtotime($wp_last_modified)) || ($client_etag == $wp_etag)) ) {
if ( preg_match(‘/cgi/’,php_sapi_name()) ) {
header(‘Status: 304 Not Modified’);
echo “\r\n\r\n”;

替换为

if ( ($client_last_modified && $client_etag) ?
((strtotime($client_last_modified) >= strtotime($wp_last_modified)) && ($client_etag == $wp_etag)) :
(($client_last_modified && strtotime($client_last_modified) >= strtotime($wp_last_modified)) || ($client_etag == $wp_etag)) ) {
if ( preg_match(‘/cgi/’,php_sapi_name()) ) {
header(‘Status: 304 Not Modified’);
echo “\r\n\r\n”;

重新上传到服务器上就可以了,看来以后还是不要太早尝鲜做小白鼠的好。

Update:发现William更早就提出了这个问题和修改的办法。

WordPress 1.5.1版发布

刚刚从WordPress的blog上看到WordPress1.5.1发布的消息,这个版本主要是补bug(说是补了一个重要的安全性bug),改进了插件的API,而且据说运行的速度更快了。

changelog上看,对这几点比较感兴趣:

  • Extended ping support :加强ping功能,不知道我使用过程中遇到的一些blog无法ping成功的问题是否被补好了
  • Support for a Status: theme header field that allows themes to be marked as private, publish, or draft :从意思上看好像是可以指定theme是private、publish还是draft,可以方便在换新的theme的时候进行模板的调整和调试;
  • Plugins can now have multiple option pages:允许插件有更多的选项选择(升级后没找到在哪里,可能现有的插件还不支持?好像弄明白意思了,原来是以前的option插件只允许一个插件的选项页面,现在可以有多个插件选项页面
  • Active plugin and theme highlighting :目前使用的插件与主题都高亮显示
  • Paging on the Manage->Posts page :在管理页面可以方便地翻到以前的文章
  • 由于WordPress1.5采用了主题(theme)的方式,因此升级过程比较简单,将新版的WP文件替换旧的文件就可以了,我已经升级成功了。当然你最好还是先备份一下文件和数据库,尤其是如果你使用了WordPress自带的默认模板并作了修改的话,一定要先备份。

    WordPress下载页面

    Update:好像我以前提到过的RSS Feed输出里的时间码时区的bug也修复了。