pjblog完美转换wordpress
上周我把Black-Xstar's Blog从pjblog转换到了wordpress,经过一周的试用运行良好,把方法分享给大家。
标题上说的完美,只是我认为的完美。根据个人情况,我没有转换标签和用户数据。留言数据因为wordpress默认无这个功能也没有转换。
我原来的pjblog版本是2.8.5.157,转换后的wordpress版本是2.7.1。理论上支持这附近的几个版本。
首先在本地搭好asp环境,或者和我一样去5944申请个免费的用下。
然后在服务器上安装好wordpress,全新安装即可。
下载pjblog的数据库和转换程序。把数据库改成“pj2wp.mdb”放到同一个文件夹:

在浏览器访问“pj2wp.asp”这个文件,出现如下界面:

点开始导出:

把“pj2wp.sql”这个文件下载回来。
打开下载回来的“pj2wp.sql”数据库文件,可以直接用Windows自带的记事本,也可以用相对专业的文本编辑工具。
查找“article.asp?id=”替换成“?p=”,目的是把内链换成新的。这样替换其实一点也不科学,你也可以用正则等高级方法来处理。
查找“attachments/”替换成“http://新blog地址/wp-content/attachments/”,目的是把图片和附件恢复。同样不科学,也可以用正则来处理。
至于还有其他的地方,比如某些UBB标签啊,就根据自己需要进行替换了。我只弄了这两个地方就基本没问题了。
进入安装好的wordpress数据库,找到“wp_users”这个表。
如果blog只有一人写,那么直接修改第一行的“user_login”这个字段,改成原来pjblog的用户名。

如果你的blog是多人一起写的,那么需要给每个人创建用户,否则导入会出错。
接下来回到数据库,把“pj2wp.sql”导入进去,这里需要注意编码和大小限制:

最后把原来pjblog的图片和附件文件夹attachments放到wordpress的wp-content文件夹里面。
如果没意外的话,这个转换过程就OK了,接下去访问新的Blog试试看吧。
还有一个外链问题,我是使用.htaccess来处理的,贴出来给大家参考吧:
RewriteEngine On
RewriteBase /RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^(.*)$ %1.html? [R=301,L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]Redirect permanent /atom.asp http://你的blog地址/atom/
Redirect permanent /feed.asp http://你的blog地址/feed/
Redirect permanent /default.asp http://你的blog地址/
在其的基础上,我修改了一些地方,比如去掉了用户数据转换部分,重点修改了pjblog的ubb处理函数:
1.img标签,修改成<img src="" />的形式。
2.swf|wma|wmv|rm|ra|qt等标签,这个比较难处理,我偷懒改成了<br /><strong>媒体文件地址</strong><br />这样的。
3.url标签,这个好像没怎么改,去掉了rel=external这个属性。
4.color|size|font|b|i|u|s|sup|sub等标签,全部按照xhtml标准改了。
5.down和mdown标签,统一改成<a href="" target="_blank"></a>的形式。
6.code标签,改成<code></code>这种。
7.quote标签,改成<blockquote></blockquote>这样的以适合wordpress样式。
8.reply标签,这个是新版pjblog在回复中用的,我改成了<blockquote>某人 于 某时间 回复:<br />内容</blockquote>,可以参考我blog的样子。
9.hidden|html|list等标签,我没用过,就没改了。
好像就是这么多了,其他可能还改了一点点,已经不记得……
你可以自己去修改“ubbcode.asp”这个文件,改成喜欢的形式。
Wonderful。 我是沙发吗?
Wonderful。 我是板凳吗?
请问你的右上角的那个RSS订阅Jquery是怎么实现的?我非常想有那种特效,恳请博主赐教啊。我下次再来啊。
我又来了,很想看到你给我的回复,有点失望,我没有看到。
希望你能告诉我,谢谢呢。
以后还会来的哦!
@蓝蓝小雪
是
@陈华
是
@mtxt
这个效果是inove主题自带的,我也不知道怎么实现,你可以去www.neoease.com问问作者。
@mtxt
不好意思,我最近很忙,刚刚才看到。
如果填写了正确email会收到回复通知的:)
哈哈,我手机接到你的回复了,谢谢了。
我记得我写了很长一段的使用说明和注意事项咋没了
@JAY
有些地方不同,为了避免误导,所以我去掉了。
PS:你不会怪我吧……
UBB的处理可以参考下aw的版本
http://www.awflasher.com/blog/archives/800
@yaker
唉,我当时在转换的时候请教过aw一个正则问题,结果人家懒理得我……
@Black-Xstar
汗,aw最近在创业吧,比较忙~
博主的这篇文章很受用,本人也准备换到WP了,也在为ubb标签格式头疼。
可惜,我的是PJBLOG3.6,用这个能导出为SQL,可转到WP 2.9就不是,提示:
错误
SQL 查询: 文档
INSERT INTO wp_posts (id, post_author, post_date, post_date_gmt, post_content, post_title, post_category, post_excerpt, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, guid, post_mime_type, comment_count) VALUES(2, (SELECT ID FROM wp_users WHERE user_login = 'admin'), '2007-11-05 11:22:40', '2007-11-05 11:22:40', '周六下午又和小B啊猪打了33场JJC,22胜11负,其中包含我的一次掉线
这次的感觉熟练多了,自己在战场里面打打杀杀了好久,虽然操作不好意识不风骚跑位也不YD,可是遇到的队的Rating似乎都很低,输了就-19,赢了才不过10~13,有点郁闷,所以成绩还不错可也只打到1634
遇到几个问题
1. 我是明显的首次被集火对象,还是不大会绕柱子,而且对自己的PK能力太不自信,一般一被集火就有点犯傻..特别怕的是ZS和DZ
2. 最后次输掉时是自己VS一个FS,我是全技能的,�[...]
MySQL 返回:文档
#1054 - Unknown column 'post_category' in 'field list'
~-~
@米拉
安装个低版本的wordpress就行了,数据库结构不同的。
@Black-Xstar
wp2.7.1安装的时候就出现一堆错误..
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\wordpress\wp-settings.php on line 520
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\wordpress\wp-settings.php on line 535
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\wordpress\wp-settings.php on line 542
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\wordpress\wp-settings.php on line 578
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\wordpress\wp-settings.php on line 18
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\wordpress\wp-settings.php:520) in C:\xampp\htdocs\wordpress\wp-login.php on line 255
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\wordpress\wp-settings.php:520) in C:\xampp\htdocs\wordpress\wp-login.php on line 267
折腾了好几小时了..
@米拉
这个应该是环境问题吧,最好在LAMP下操作。
2.9没有这个问题...
@米拉
那我也没办法了。
还是搞个LAMP吧。