Archive for the ‘WordPress’ Category

推荐这个Articles插件
Monday, December 11th, 2006

Articles 1.0,这是Alexking写的一个插件,留心的朋友应该已经从WordPress后台的Dashboard里面看到了,利用它可以把自己blog里面一些值得读的日志整理出来放到一个页面中(其实也不限于是一个页面)。对某些人可能比较有用。

想把某文章加进该页面需要为它加一个名为article的custom field,值为1。可以通过新建一个页面模板来实现,或者用它默认打开的”token”方法,显示效果可以选择单列或双列,具体用法见插件中所带的说明文件。效果可以看我的Articles页。

WordPress的一个小bug
Monday, December 11th, 2006

今天删除了一个无用的分类,该类下有一篇文章,文章除了属于这个分类外还属于默认分类。删除后,偶然发现在默认分类中该文章竟然出现了两次,在数据库中直接查询了一下,果然是有重复的行。

看来删除分类的时候,WP想当然地认为该分类下的日志没了爹,就应该进孤儿院。可是爹死了说不定还有妈在,这样做有点着急了,至少应该检查一下,没有的话再划到默认分类里面。

WP也没有检测重复分类,显然是疏忽了,如果考虑到这点,自然也就有上面的想法了。默认分类不一定是垃圾坑,我就把Uncategorized类别删除了,默认分类是Blogging。

我觉得正确的做法应该是检查一下这些文章有没有别的类别,有的话就不用加默认分类了。不知道其他用户什么看法?我已经在trac里面提交了这个问题,见Ticket #3460

Update: Trac里面有了回应,说这在2.1里面已经修正了,有可能加到2.0.7版本中。

用好WordPress的ping功能
Saturday, December 9th, 2006

ping是blog最基本的功能之一,WordPress作为当前最优秀的blog系统之一,当然在这方面也做得相当好,pingback,trackback,该有的都有了。

尽管这是最基本的功能,许多blogger可能根本没有用过或注意过,甚至不知道这是什么东西。它不是操作系统中测试网络状态的那个ping工具,而是在blog之间或者blog与其它服务之间进行通知的一种机制。

经常会有这样的情况,在别人的blog上看见一篇文章,看完之后很有一些想法。可是这么有价值的东西,放在自己的blog上岂不是更好吗?然而这样做的话又怎么能让原文的作者和其他阅读同一篇文章的人分离自己的观点呢?这时候就该trackback出马了。一般的blog每篇日志都在显要位置给出一个trackback地址。在WordPress里写文章的时候,编辑框下面有一栏“Trackbacks”,在那里填写你要通知的日志的trackback地址。这样在发表文章的时候,你的blog就会向被trackback的日志发送一个ping。这个ping消息里面包含一个摘要,就是你的文章的开头。如果ping成功的话,对方的留言区就会出现你的文章的摘要,并且有文章的链接。

你可能会说,还要找到对方的trackback地址填写到那里,真麻烦。那么可以选择另一种方式。在Options->Discussion里面,第一个选项就是“Attempt to notify any Weblogs linked to from the article”,打开它。对别人的文章作评论时,一般会写“某某某说什么什么”,再加上他日志的链接。日志发布时WordPress就会自动通知你文章中出现的所有链接。发表后如果ping成功,他的日志留言里也会出现你的文章摘要。不过和trackback有区别的是,这个摘要是链接出现位置周围的那一段。

前面提到ping可以让blog通知其它的服务而不限于blog。Technorati和Weblogs.com之类的就是一些blog目录服务器,它们搜集各个blog里面的日志并且做一些处理,提供搜索等服务,让读者更方便地获取信息。WordPress的Options->Writing管理页最下面有一个“Update Services”,把相应的ping服务器填写进去,有新文章发布时就会自动通知这些网站,让它们来抓取最新的文章。WordPress在这里默认添加了一个Ping-o-Matic! 的地址。Ping-o-Matic! 并不是面向读者的,它像FeedBurner一样为你分担任务,你只要通知它一个服务器,它就会为你通知许许多多的服务器。

如果你使用了FeedBurner或者Feedsky之类的RSS烧制服务来为你分担流量和统计订阅者数据,最担心的可能就是它的更新速度问题了。发表文章后你肯定希望更新后的Feed被抓取并更新到FeedBurner或Feedsky的Feed,以让读者尽快看到,但是烧制者的服务器又无法过于频繁地做查询更新的无用功。这时候ping又可以发挥作用了。Feedsky刚刚发布了它的Ping接口,地址是http://www.feedsky.com/api/RPC2,把它填写在Update Services里面,发表文章时就会自动通知Feedsky,它的bot很快就会过来看你的blog有没有更新,有的话就重新烧制Feed。实际上FeedBurner已经在Ping-o-Matic!的列表中,所以不用再操心了,如果你还嫌Ping-o-Matic!慢而想直接Ping,就把FeedBurner的ping地址(http://ping.feedburner.com/)也加上。试一下,Feed一般在十分钟之内应付更新,足够了。需要注意的一点是,Feedsky的bot是看head里面的RSS链接来查找更新的,所以要把WordPress本身的RSS链接(通过调用bloginfo(’rss2_url’);)加进去,否则接到通知也无法更新。

Shuttle project is dead
Thursday, December 7th, 2006

自从某次发现Shuttle这个项目我就开始期待它被WordPress纳入,它在界面和易操作性上比WordPress原有的后台有很大的提升,看看它主页上的图片就知道了。

今天早上看到Brian’s Latest Comments插件有更新,感觉很奇怪,他已经好久没更新过了,而且我用得好好的。原来是Binary Bonsai将Blog更新到2.1 Alpha后出现了兼容性问题,详情见WordPress 2.1 Alpha Notes

文中提到测试版本有了Autosave的功能,非常值得期待。我们经常会遇到浏览器意外关闭后辛辛苦苦编辑的内容丢失的情况,虽然可以通过插件添加自动保存功能,但集成在WordPress里面就方便多了。

同一页面(包括comments)也提到了关于Shuttle的坏消息。难怪这个项目最近没什么动静了,Matt似乎并不喜欢Shuttle的开发方式。我本来想着到2.10版本时整个Shuttle项目会被融合进来,现在看希望不大了,最多只是一小部分。不过WordPress的后台也没什么大的缺陷,够用就好了。

另外WP的Roadmap里2.0.6应该是在12月1日就该发布了,推迟到现在还有一个active ticket。2.1版本还是“no date set”,不过进度已经到98%,应该快了。

用好WordPress的quicktag editor
Wednesday, December 6th, 2006

自从开始用WordPress就不停地寻找一个完美的编辑器,它自带的tinyMCE实在是太垃圾了,经常会自作主张地整理HTML代码,从而把我们想要的格式抹掉,尤其在排版代码的时候最郁闷。

后来也用过EditorMonkey,很大,载入页面很慢,这个是不想用它的主要原因。另外Autosave这样的插件也不正常工作,用FCKEditor作编辑器的话,上传图片也不支持直接点发送填到文章里面。

最终还是觉得WordPress的quicktag editor最爽,它不会随意修改HTML代码,而且页面载入飞快,因为没有了带图片的工具栏。

比如你想加一段引文,点一下b-quote按钮,<blockquote>就出现在了编辑器中,引文输入完成,点击Close Tags,blockquote关闭标签就出来了。

但是quicktag editor的按钮还是太少了。如果要加一些按钮怎么办呢?非常方便,有一个插件叫做WP-AddQuicktag,可以快速地为quicktag editor增加按钮。

但是这个插件插入的按钮全部是追加在原有按钮的后面,如果你想自已定义按钮的顺序,也不难,打开wp-includes/js/quicktags.js文件,它的顶部就是添加按钮的代码,照葫芦画瓢就可以了。比如要添加一个插入段落标签<p>的按钮,可以在合适的位置加入这样的代码:

edButtons[edButtons.length] = new edButton(’ed_p’
,’p’
,’<p>’
,’</p>’
,”
);

更多方法可参考WordPress Quicktags Guide。参考quicktags.js中img按钮的做法,应该也可以实现自己的比较复杂的功能。

对不喜欢默认可视化编辑器的稍微了解HTML的用户,推荐使用这个编辑器。看样子有不少WP用户是这样的,比如那个mimeTex作者就是,他甚至不知道WYSIWYG编辑器会把<tex>这样的标签剔除。

应对垃圾留言的困境
Sunday, December 3rd, 2006

前阵子pulq的留言总是被Akismet ban,显然是根据IP判断的。我便发邮件给akismet的support,回复说,让朋友在podz.wordpress.com留个言,他会分捡出来。我便让pulq通过代理上那个网址留言。多亏他没留,过了几天我一想,通过代理上去有个P用,IP都变了。

于是又发邮件给akismet,问他们为什么要根据IP来杀,还有尽量不要误杀,即便有少量的不能抓住。回复说,由于一个IP经常在某段时间用来发送无数的spam comment,他们必须根据IP判断。spammer为了逃避也会经常换IP,这里就解封原来的IP了。嗯,pulq留言已经正常了:smile:。

Akismet并不是“宁可误杀一千,决不放过一个”,他说误杀的情况很少。不过我已经遇见好几个了,现在每次清空的时候都比较谨慎地浏览一下。该死的垃圾留言现在是越来越长,有的甚至像一篇长长的论文,也够占地方的。

WordPress 2.0.x需要注意的两个地方
Monday, November 20th, 2006
  1. 每日自动备份失效。我一直用wp-cron配合wp-db-backup插件,每天定时将数据库备份发送到信箱中。不过好像是从2.0.4版本开始wp-db-backup插件作了修改,使得定时备份不起作用了。解决办法是在该插件的php文件的末尾,找到wpdbBackup_init函数,把其中的“if ( !current_user_can(’import’) ) return;”语句注释掉。
  2. 缓存功能默认关闭。就是不在wp-content/cache目录中写缓存文件了。解决办法是在wp-config.php文件中加一行“define(’ENABLE_CACHE’,true);”将该功能打开。WP好像从2.0.3开始就默认关闭了这个功能,因为它有一个安全隐患。不过我们大部分的WP用户并不需要为这个漏洞担心,看看这个页面上westi列的三个必要条件。我们大多都不提供用户注册功能,所以,放心吧。
一些更新
Saturday, October 7th, 2006

我的网站:用上了Gravatar,留言时候有大头贴了。

Paged Threaded Plugin:

  • PHP5对array_merge函数有所修改,参数必须是array类型,于是插件在PHP5环境中就有问题。把参数做个强制类型转换就好了。
  • 原来要回复某个留言,点了"reply to this comment"之后,被回复的留言前面的加号就一直保持不变,今天终于知道是怎么回事了,修正了相关的Javascript。