in 偶知道

升级到 WordPress 2.7

本站更新技术日志

因为文件结构变动较大,不在原来2.6的基础上做版本管理了,另开了一个2.7的branch,把需要的改动手动合并过去。

最大的变动是采用了Thread Comment,可以针对某条留言进行回复。本来wp 2.7自身添加了留言回复模块,但需要在使用的主题里更改代码,弄着很麻烦。所以还是用了刚升级到能够兼容2.7的wordpress-thread-comment插件,感觉很好用。反正后台数据结构都一样,以后也有再换的余地。

之前我都是延续从歪酷留下来的习惯,直接编辑留言,用缩进<blockquote>的方式做回复。这次直接在数据库里写了几句SQL,把原来的那些回复分离成现在的thread方式。有需要的可以参考一下(随手写的,懒得做优化了)。

CREATE TABLE IF NOT EXISTS `comment_tmp` (
`id` bigint(20) unsigned NOT NULL,   `idx1` int(10) unsigned default NULL,   `idx2` int(10) unsigned default NULL,
`c1` text,   `c2` text,   `c3` text,   PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

insert into comment_tmp (id,c1) (select comment_id,comment_content from wp_comments where comment_content like '%<blockquote>%');
update comment_tmp set idx1=locate('<blockquote>',c1);
update comment_tmp set idx2=locate('</blockquote>',c1);
update comment_tmp set c2=trim(trim('\n' from substring(c1,1,idx1-1)));
update comment_tmp set c3=trim(trim('\n' from substring(c1,idx1+12,idx2-idx1-12)));

INSERT INTO wp_comments
(comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved, comment_agent, comment_type, comment_parent, user_id)
(select
comment_post_ID, 'fivestone', 'mail@mail.com', 'http://blog.fivestone.info', '', DATE_ADD(comment_date,INTERVAL 2 MINUTE),DATE_ADD(comment_date_gmt,INTERVAL 2 MINUTE), c3, 1, '', '', id, 1
from wp_comments,comment_tmp where wp_comments.comment_id=comment_tmp.id);

update wp_comments set comment_content = ( select c2 from comment_tmp where id=comment_id) where comment_id in (select id from comment_tmp);

DROP TABLE `comment_tmp`;

留言表wp_comments中,comment_parent字段对应所要回复的留言的comment_id;user_id对应做出评论的人(fivestone)在wp_users表中对应的用户id。SQL运行后,新生成的那些fivestone的留言不能显示avator,后来发现如果user_id不为0的话,系统是根据wp_users表中用户注册的email而不是留言里填的email取获取avator,更改用户信息后一切正常。

-----------------------------
TODO:

留言的分页显示功能需要测试,不过现在每篇文章也就十几条评论,一时还不需要。

因为用的是英文版,后台管理页面的汉字字号很小,看起来不舒服,回头要调一下。

自动发邮件功能还不能用。用Configure SMTP和Swift SMTP插件都搞不定。后者发测试信时报错:

Uncaught Error of type [swift_connection_exception] with message [Authentication failed using username 'reply' and password '**********']

或者(用gmail):

Uncaught Error of type [swift_connection_exception] with message [The SMTP connection failed to start [tls://smtp.gmail.com:465]: fsockopen returned Error Number 110 and Error String 'Connection timed out']

-----------------------------
现在使用的插件:

中文 WordPress 工具箱 1.2
Disable autosave 0.1
Peter's Random Anti-Spam 1.0.5
Simple Tags 1.5.8-2.7
Twitter Tools  1.0
Wordpress Thread Comment 1.4.9.2
WP-DownloadManager 1.31
Google XML Sitemaps 3.1.0.1

-----------------------------
停用wp-db-backup。用这个插件导出的SQL,导入到本地机器后。总是会出现一两个字的乱码(如图)。在文本编辑器里查看SQL文件,乱码就已经存在了。但是如果把这份SQL不做修改直接备份回原来的服务器,乱码的地方又恢复成正常的汉字...搞不懂。直接用phpMyAdmin里的导出功能,还没发现出现这样的问题。

Write a Comment

Comment