织梦Dedecms转换为WordPress详细流程
由于织梦dedecms授权收费,那么我们可以把dedecms中的数据搬家到wordpress,网上搜索转换教程,折腾几个小时,顺利把网站的文章转移到wordpress程序,保留了文章点击数、文章日期、文章分类,文章标签的数据表着实弄不过来,只能放弃!下面是具体的操作方法,操作前请备份好网站数据。
1、DEDECMS文章标题等基本数据导入wordpress站点
织梦CMS的文章标题、正文和栏目分别存放在三个不同的数据表中,而wordpress则把文章标题和正文放在一个数据表,栏目(分类目录)放在另一个数据表中,为了简化后面的工作,第一步是制作生成织梦CMS的全站RSS文件(制作方法:https://www.randengSEO.com/seo-15842.html),然后通过wordpress程序后台——工具——导入——RSS,上传导入生成的织梦全站RSS文件。
这样就可以使wordpress在wp_posts数据表上生成文章标题,在wp_terms数据表上生成文章分类,并匹配起来,此外通过RSS导入,wp_posts数据表上还导入了文章摘要、日期、自定义网址等数据,但是RSS不会导入全文!
2、导入织梦CMS文章全文到wordpress站点
织梦文章的数据存储在dede_addonarticle数据库的body字段中,现在需要把body字段的内容转到wordpress数据库的wp_posts数据库的post_content字段里。
这个转换需要使用一个桥梁——那就是dede_archives数据表,即dede_addonarticle上body的内容先转到dede_archives上,再从dede_archives转到wp_posts的post_content里。这两次转换的匹配点,分别是织梦里的文章id,以及Wordpress里已经导入了的文章标题(这与织梦里的文章标题是一样的)。
具体的操作步骤如下:
进入phpmyadmin,选择dedecms网站使用的数据库,在SQL输入框中执行以下SQL语句,在织梦数据库的dede_archives表上,添加字段body:
ALTERTABLEdede_archivesADDbodylongtextNOTNULL
然后再执行以下SQL语句把dede_addonarticle数据表中的body字段内容导入到dede_archives的body字段,语句以dede_addonarticle的aid和dede_archives的id为匹配点:
UPDATEdede_archives,dede_addonarticleSETdede_archives.body=dede_addonarticle.bodyWHEREdede_archives.id=dede_addonarticle.aid
接着通过phpmyadmin导出功能把dede_archives数据表导出,然后再通过导入功能把该数据表导入wordpress网站使用的数据库中,使其与wp_posts数据库处在同一个数据库里。
下面再次使用SQL语句把dede_archives的body导入到wp_posts上的post_content上,以文章标题为匹配点(前提是文章标题都是唯一的):
UPDATEwp_posts,dede_archivesSETwp_posts.post_content=dede_archives.bodyWHEREwp_posts.post_title=dede_archives.title
至此文章内容部分转换完成!
3、织梦CMS文章点击数导入wordpress网站
织梦CMS的文章有点击数(即是文章的阅读数),不导入wordpress怪可惜。
在wordpress上安装wp-postviews插件,把织梦CMS文章点击数转换为wp-postviews插件的浏览数。
但是由于该插件需要文章有浏览数之后才会在数据库中生成meta_key的值,因此需要先在wp_postmeta表中添加对应的meta_key的值。
执行以下SQL语句,把文章ID导入wp_postmeta中的post_id字段:
INSERTINTOwp_postmeta(post_id)SELECTIDFROMwp_posts
执行以下SQL语句,把上面添加的post_id中的meta_key字段的null设置为views值:
UPDATEwp_postmetaSETmeta_key='views'WHEREmeta_keyISNULL
执行以下SQL语句,把上面添加的post_id中的meta_value字段的null设置为0值:
UPDATEwp_postmetaSETmeta_value='0'WHEREmeta_valueISNULL
然后再把wp_posts的hits导入到wp_postmeta数据表中的meta_key字段的值views对应的meta_value,SQL语句如下:
UPDATEwp_postmeta,wp_postsSETwp_postmeta.meta_value=wp_posts.hitsWHEREwp_postmeta.post_id=wp_posts.IDANDmeta_key='views'
常见问题
1、把rss.xml导入wordpress时提示不能获取文章id
Rss.xml编码如果和wp系统的编码不一样,在导入wp时,就会提示不能获取文章id。例如你用的织梦是gbk版本的,而默认的wp是utf版本,就会提示这个错误了。
解决方法:很简单,如果你用的是织梦gbk,那么生成的rss.xml就是gbk的,用dreamwear等编辑工具,把rss.xml改成utf的,之后导入wp,问题就解决了。
2、导入rss.xml的文章数量限制
当你的织梦内容很多时,例如有好几万篇文章,那么导出的rss.xml中也就包含几万标题。在导入wp时,在导入到2000左右就会卡住,不能导入了。
解决方法:很简单,只要把rss.xml重复导入到wp就可以了,因为第二次导入rss.xml时,第一次导入的内容会被跳过,第二次会导入新的内容,重复导入几次后,rss.xml就完全导入成功了。
3、如果织梦数据导入wordpress后,wp网站首页内容显示正常,但内容页没有显示内容。
这应该是你wp的固定连接问题,解决方法:wp后台——设置——固定连接,修改成默认,问题就解决了。
4、在文章全文导入的时候,可能由于文章数量很多,一次性执行sql语句后导致mysql直接挂掉了(这个看各自服务器性能,可以分批次来转换,例如通过wp_posts表里的ID区间来分批转换。
UPDATEwp_posts,dede_archivesSETwp_posts.post_content=dede_archives.bodyWHEREwp_posts.post_title=dede_archives.titleandwp_posts.ID<501UPDATEwp_posts,dede_archivesSETwp_posts.post_content=dede_archives.bodyWHEREwp_posts.post_title=dede_archives.titleandwp_posts.ID<1001andwp_posts.ID>500
以此类推,看你文章多少来决定。