将 WP-Forum 转换成 Simple:Press Forum

Wordpress, 软硬天师   评论

随着wordpress 2.3-2.5的释出,本博客原来挂的一个wp-forum论坛被指出有安全漏洞,前一阵较忙也懒得打理,只是关闭了事,最近闲来“论坛癖”发作,遂改成WP-Forum Plugin Security Bulletin文中提出的simple forum方案,去官网一看,已经有simple forum的3.0.3版本,名字也改成了simple:press forum(下简称sf)

sf的功能相较于wp-forum更为强大,而且作者也在不断更新(不像wp-forum的作者已经人间蒸发很久了),因此能比较快于相应用户的需求。下面列一些sf较为特色的功能:

  • 支持游客发帖,只需象wordpress游客发帖时那样留下名字,邮箱即可(邮箱主要用于gravatar头像)
  • 支持用户自传头像,同时也支持gravatar 2插件自动整合
  • 支持high slide 图像在帖子页内放大显示
  • 支持站内PM(短消息)
  • 支持更多的admin操作,如用户组分类,论坛访问权限等等
  • 支持博客文章和论坛文章之间的自动互贴(这一点和我原来想要的功能完美吻合)

转换也相当的简单,第一步是将sf插件上传,激活后不做任何改动,即不要建任何用户和论坛分组,第二步将sf官网给出的转换程序插件上传至plugin目录激活后,一步一步按提示操作就可以了。

这里特别再提一下转换出错时的处理方法:转换程序可以说已经想的颇为周到了,但由于对中文的处理方式不熟悉,还是可能出错的,我在转换时就碰到了问题。

首先,在转换过程中出错后,请将数据库中prefix_sfgroups,prefix_sfforums,prefix_sftopics,prefix_sfposts四张表清空后再转(这里的prefix对应您数据库中的wordpress表名前缀),因为转换到一半的时候,这些sf的表中已经有部分数据了,再转会出现键名重复错误。

其次,我在转换中遇到topic转换的错误,分析错误信息发现,wp-forum的主题(thread)在转换到sf的topic时,会插入一个叫targettopicslug的字段(也就是主题别名),而此字段是不能有重复的,因为wp-forum中没有这个字段,转换程序试图将原主题名字编码后循环+1来自动产生,这在英文方式下是没问题的,但是到了中文状态的长主题名下就有问题了,而我原论坛的一个帖子碰巧就有这个问题了,再看wp-forum的thread表,其中的ID字段是唯一且不重复的,那就拿来用做sf的slug主题别名吧。查找修改如下

1.找到wpforum-to-sf-converter.php中的// move over the topics部分,可以看见调用了mpc_write_topic函数

2.找到mpc_write_topic函数,将$targettopicslug变量注释掉,并放在函数外部参数表,以供接下来调用函数时传入

3. 回到mpc_write_topic函数调用处,将wp-forum中的id作为参数传入,就保证了$targettopicslug的唯一性。

最后在顺利转换完成的情况下,在查看sf的说明文件,进行建其他的子论坛及用户和用户权限等常规操作。
至于sf的其他属性,就慢慢玩吧 :)

---到论坛来参加本主题的火热讨论吧 ^_^ - (1) 帖子

相关日志

发布评论

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS 登录
This blog is protected by Dave's Spam Karma 2: 6691 Spams eaten and counting...