首先就是那个可视化编辑器无法载入的情况。我碰到的问题,是所谓的“找不到元件(object)”。解释出来的意思就是,相关.js都没载入;因此这个TinyMCE编辑器,根本就是影踪全无。按照以往经验,我先把所有插件停用,然后用排除法一个一个试验。
说到停用所有插件,有一个简便的办法,就是把原来的/wp-content/plugins目录改名为/wp-content/plugins~,然后新建一个空plugins目录。这样子,一下子所有插件都停掉了。如果要重新激活一个插件,只需要把那个文件从plugins~目录移动到plugins目录就行了。当然,你有可能需要在后台的插件列表里面重新激活一下。
回过头来继续说这个TinyMCE编辑器的事。我花了点功夫把所有插件给试验了一遍,结果发现根本不是因为插件不兼容而引起的问题。真正的问题,出在tiny_mce_gzip.php这个文件上。它的作用,是把tiny_mce的javascript脚本通过gzip协议传输,降低传输时间,加快载入速度。我碰到无法载入的原因在于,php.ini中有错误的设定。因为我在自己的Dreamhost上面安装、编译了自己的PHP(v4.4.2, phpinfo() ),所以之前无意中鬼使神差地修改了php.ini里面有关output_handler 的部分。结果呢,php默认就是通过gzip输出内容,虽然我把Wordpress后台里面“阅读”菜单中的gzip选项关闭了,但是TinyMCE仍然坚持着使用gzip输出,于是,自然载入失败了。值得一提的是,在调试过程中,我还试着下载了最新版的TinyMCE 2.0.9 混进了Wordpress,期望能解决问题。结果发现,还是不行。网上有人指出说,让Wordpress避免载入这个tiny_mce_gzip.php,而是直接载入TinyMCE提供的一个静态.js文件可以解决问题。我也试验了,似乎只是部分解决了问题。因为Wordpress中的TinyMCE是经过特别调整的专用版本(也有人戏称是阉割版本),所以有的按钮会发生无法使用的问题。好在,最终我找到了主要问题所在,算是不用伤筋动骨就恢复正常了。
还有一个有趣的部分是,网上有文章提到说如何打开Wordpress内置的TinyMCE中隐藏的按钮。具体可以去Google搜索,修改很简单,修改以后可以打开一个叫做Show/Hide Advanced Toolbar 的按钮,点击一下就可以显示/隐藏额外的一行编辑器按钮,包括字体、大小、样式之类。要知道,完整版本的TinyMCE可是有着整整三行的按钮呢,呵呵。有兴趣不妨试试看。
第二个问题,是有关AJAX和Comment的。现在的网站,特别是博客,都注重AJAX化(AJAXify)整个系统。和用户体验特别有关的就是评论(或者翻译成留言、回复)部分。之前我一直使用Inline AJAX Comment 这款插件。但最近发现,总是有些不明原因的错误出现,更主要的问题是,这不利于提升站点的粘性,因为大家在首页就看到了所有评论,看完就走了。相比较之下,到单篇文章页面阅读评论,虽然增加了一次点击,但是提供了更多的吸引访客的机会(比如在单篇文章的页面加入最新发表和相关文章两个列表等等)。同时,点击进入以后,撰写留言的表单也出现了,对增加访客留言率或许会有帮助。权衡再三,我还是去掉了这个插件。
取而代之的,并非那个很有名的台湾编程美女“懒懒喵”的作品AJAX Comments Reply ,而是AJAX Comment 。原因很简单,前者属于Wordpress Hack,修改了源代码,过程比较麻烦是小事,不利于系统的升级和完整性才是真正让我有所顾虑的。AJAX Comment我觉得比较优秀,并且支持一款叫做AuthImage的插件,能够提供从Captcha图片验证、无刷新评论提交、错误信息反馈、新留言即时显示的统一解决方案。具体来讲,安装过程也不顺利。使用中总是出现javascript错误(看来这是AJAX特性的一个致命缺陷,因为javascript的错误调试实在不便),我找来找去找不到原因。后来终于发现,我使用的这款Theme叫做Tiny(另有个修改版本叫作TinyMod),也作了一些修改,但是一直没发现,作者把评论表单的提交按钮的名字命名成了submitComment,这不是一个规范的名称。对于AJAX Comment插件来说,提交按钮的名字必须是submit才能正常运作。做了修改以后,就一切正常了。
此外,我特别要提一下AuthImage 这款插件的插件。它提供的设置选项丰富,调试起来相当有趣。具体显示可以看本页面最下方的Demo。它的优点在于,可以动态刷新验证图片;缺点在于,默认设置下的验证图片是在很丑,甚至很难辨认(真人很难辨认… orz)。我选择的是背景图片模式,去掉了大部分花里胡哨的背景图片,只留下来了两张,而且用Photoshop去掉了颜色变成灰度,并且调整了亮度对比度。虽然,相对来说防机器识别能力下降了,但可读性好多了。想来我这样的小站犯不着有人用机器识别 来对付我吧?我还调整了字体变形的算法。因为单靠设置还不能达到要求,所以对于源代码略为有些小的改动。
第三个修补,是使用广泛的Admin Drop Down Menu 插件。一切都好,就是不晓得为什么,不论我使用谁出品的中文包(就是zh-CN.mo文件),后台的撰写和管理的中文翻译就是不出现。一直是Write和Manage。这不是什么影响使用的问题,但是不彻底的菜单中文化总让人觉得看着别扭。忍了很久以后终于发现了原因。在插件的adminmenus.php 文件中的aws_correct_core_menus() 函数里,作者加了一些关于后台界面措辞的修订。
// make some corrections
$menu[5][0] = “Write”;
$menu[5][1] = “edit_posts”;
$menu[5][2] = “post-new.php”;
$menu[10][0] = “Manage”;
$menu[10][1] = “edit_posts”;
$menu[10][2] = “edit.php”;
因此,中文语言文件找不到可以匹配的英文单词进行翻译,后台菜单就显示出来Write和Manage了。修改很简单,只要把这两行给注释掉就可以了。看一下你的后台,是不是有“撰写”和“管理”的字样出现了?
最后说一个插件问题,是有关Google Sitemap 插件的。我很喜欢这个自动生成.xml格式站点地图文件的插件,效果可参见本页面最下方的xml sitemap 图片。只是有个问题,它有时候会无法显示图片。因为这个图片是通过插件动态生成的(作者把Gif图片用二进制格式包括在插件的.php文件里了),所以只需要直接把这个图片的地址拿来单独放在浏览器里面一看,就看到出错信息了。
原来,在发送图片的Header之前,已经有插件提前给浏览器送出了Header,就是这个叫作Display WP FeedReader 的插件(WordPress美女懒懒喵的又一个插件作品~)。归根结底,问题出在我为了中文化这个插件,把插件里面的几个英文翻译成了中文;为了避免乱码,整个文件使用了UTF8的格式来存储。而UTF8格式的插件.php文件在被系统加载的时候,似乎就已经送出了Header了。解决办法也简单,把中文改回英文,然后把文件存为普通的非UTF8的格式就好了。或许这个不是最好的解决办法。不过先凑活着用吧,等我有了更好的解决办法再说。
呼,说了这么多。目前我的Wordpress运作健康。可我总有不停尝试安装新插件的坏习惯。不过,在不停的Debug修补过程中,对于Wordpress的理解也加深了。或许有空的时候会写一个自己的插件吧?呵呵,倒是有一些想法了。

[...] 和WP插件搏斗,作者在WordPress 2.2 Bleeding使用中总结的经验,值得阅读。 [...]
很有意思,呵呵
:) WP就插件最折磨人了……
用Live Writer代替TinyMCE会是个不错的选择。:)
哦~我想这也许是一个Bug。
在Vista IE7下面,你的站点只有一条纵栏在屏幕正中。如果是Vista FF2.0,这一条纵栏会在左边。
LZ是不是同了一个类似WordPress Mobile Edition的插件,把ff当作移动设备了?
To [BLT]FQX 兄: 如果是一栏在屏幕正中是期望的效果。我不用FireFox所以..没意识到这个问题。我猜想是Theme的html对于FF的兼容性不好。谢谢提醒~
To Lamueno 兄: 我的确装了一个WP-Mobile插件,可以方便移动设备观看。理论上只有移动设备打开页面才能见到效果,我自己还没有试验过呢。不过我想应该是全文本的效果。 :p
WordPress插件够好的了。看看论坛程序的插件你才知道什么折磨人,呵呵
问题最后一个保存时不要bom信息即可。
Drin兄,我也用AuthImage,非常喜欢,用白底黑字的,和页面同一色。最近把HOST从TEXAS移动到外高桥的上海热线数据中心,忽然AuthImage就失灵了,打开了PHP的Global开关也没有用,老兄有什么高见么?
见效果:
http://www.cindychen.com/dynamic/?p=103
图片不再显示了:
http://www.cindychen.com/dynamic/wp-content/plugins/authimage-inc/image.veriword.php
我现在看一切正常哦。你再看看你的AuthImage,如果还有问题的话,看看有什么错误信息没有。有个办法就是再/dynamic/wp-content/plugins/authimage-inc/image.veriword.php里面屏蔽掉那个发送图像header的代码,让内容里面的错误直接显示出来。就可以见分晓了。
倒是与到另外一个问题,不论怎么提交,都报错说:Error: please enter the valid authorization code.
:$
已经修复,工作正常! 谢谢!
测试ajax留言与验证码插件的融合
我也一直在跟wp搏斗。
最新进展是:安装Advanced WYSIWYG Editor后,可视化编辑器干脆就什么都不显示……
可能是文件上传错了,可是那么多文件啊,上哪找……:s
啊,我找到原因了,是WP/GeoTrack——访客地图这个插件跟其他的有冲突。我按照你的简便方法停掉了所有插件,然后再恢复,找出来的。
我花了好长时间去上传WP/GeoTrack那个数据库呢,就这么的不能用了么~:s
还有要谢谢你的指点。现在我的编辑器也很多钮啦,哈哈哈哈哈哈……
不想每次都填? 花十秒钟注册一下吧: Register Log in