drupal 转 wordpress 问题以及踩坑

记录一下第一次 Drupal 转 WordPress . 废话不多说,直接上代码

1.导入数据表前要检查下有没有重复数据

SELECT n.nid `ID`,count(*) FROM node n INNER JOIN node_revisions r USING(vid) LEFT OUTER JOIN url_alias a ON a.src = CONCAT('node/', n.nid) WHERE n.type IN ('post', 'page', 'blog', 'book') group by n.nid having count(*) >1;

如果你的原网站的自定义分类比较多,可以将

 WHERE n.type IN ('post', 'page', 'blog', 'book') 

这个条件删除

2.导入内容表

INSERT INTO wp_posts (
id,
post_date,
 post_content,
 post_title,
 post_excerpt,
 post_name,
 post_modified,
 post_type,
 `post_status`)
SELECT DISTINCT
 n.nid `id`,
 FROM_UNIXTIME(n.created) `post_date`,
 r.body `post_content`,
 n.title `post_title`,
 r.teaser `post_excerpt`,
 IF(SUBSTR(a.dst, 11, 1) = '/', SUBSTR(a.dst, 12), a.dst) `post_name`,
 FROM_UNIXTIME(n.changed) `post_modified`,
 n.type `post_type`,
 IF(n.status = 1, 'publish', 'private') `post_status`
FROM node n
INNER JOIN node_revisions r
 USING(vid)
LEFT OUTER JOIN url_alias a
 ON a.src = CONCAT('node/', n.nid)
WHERE n.type IN ('post', 'page', 'article','story','news');

和第一步一样,如果你的原网站的自定义分类比较多,可以将

 WHERE n.type IN ('post', 'page', 'blog', 'book') 

这个条件删除,如果你第一步检测出重复数据需要加

n.nid not in ('167','169')

括号里面的id是根据你第一步查询的结果来的

2,更改文章类型

update wp_posts set post_type='post' where  post_type in ('news','story')

3 导入标签表
(这里不得不说下,Drupal的标签和分类是两张表,但是wordpress是一张表,所以你先导入分类的话后面标签的id就和后面对应不上了,所以先导入标签)

insert into wp_terms(name, slug,term_id) SELECT name, name,tid from term_data

4 更改标签类型
备注 ,不该下等会不好区分分类和标签,防止后面导入分类有问题,你最后可以把它还原回去,但是我发现不还原也没发现问题,就暂时没有还原了

update wp_terms set term_group='1'

5 添加到分类/标签表中

insert into wp_term_taxonomy(term_taxonomy_id, term_id) SELECT term_id, term_id from wp_terms

6 更改标签类型

update wp_term_taxonomy set taxonomy='post_tag' where taxonomy=''

7 添加标签和文章的关联
如果你直接导入成功,你是真的走运啊,我导入时报主键有问题,没办法,百度.没有找到好的解决方法,只能用菜办法,在数据库里面吧这张表的两个主键给去掉了,然后截断这张表,重新导入,导入成功,如果部分导入的话会导致部分文章没有标签.去掉后又发现后台有问题,没办法,后面写了一个简单脚本导入,跳过错误项

INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) SELECT nid, tid FROM term_node order by nid desc

8 导入分类表

insert into wp_terms(name, slug) SELECT name, type from node_type

9 添加到分类表中

insert into wp_term_taxonomy(term_taxonomy_id, term_id) SELECT term_id, term_id from wp_terms where term_group=0

10 更改分类类型

update wp_term_taxonomy set taxonomy='category' where taxonomy=''

我第一遍导入的时候人为手动 将node_type表中一个字段的值改为上面wp_terms 表中分类的值,第二遍导入时给忘记了,发现没事大影响,有影响的话可以手动修改下表中的值

11 添加分类和文章的关联

INSERT INTO wp_term_relationships (object_id, term_taxonomy_id)
SELECT nid, min_word_count FROM node JOIN node_type where node.type=node_type.type

评论表没有要求转,我就没有弄了

如上就基本完成了Drupal 转 WordPress .

然后发现前台好多链接打开都是404,坑爹啊,没办法,继续搞啊.在后台下载插件 Custom Permalinks

下面直接用php脚本来搞了

附录1:将文章自定义的链接导入到数据库

附录2:将标签的自定义链接导入到数据库

附录3:中文标签打不开,转码标签

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林中寻风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值