看起来我开发了一个解决方案,如何将 Drupal 字段作为自定义字段(发布元)迁移到 WordPress:
首先,假设我们在 Drupal 下有一个自定义内容类型。假设它有一个“键”my_custom_type,那么,如果这个 Content Type 有 Fields,那么数据库就会有一个名为
的表
`content_type_my_custom_type`
此表将包含与此内容类型相关的字段。例如:
nid | vid | field_xxx_xxx | field_yyy_yyy | ...
_______________________________________________
10 | 1 | the_value_x01 | the_value_y01 | ...
11 | 2 | the_value_x11 | the_value_y11 | ...
11 | 3 | the_value_x12 | the_value_y12 | ...
11 | 4 | the_value_x13 | the_value_y13 | ...
在哪里
-
nid - 节点 ID(节点唯一 ID)
-
vid - 版本 ID(当前节点修订的唯一 ID;每个节点可能有无限数量的修订)
-
field_xxx_xxx - 字段键
任务是将字段移动到 现有 WordPress 帖子作为此帖子自定义字段 (post_meta)。
考虑到 Wordpress 中 $TABLEPREFIX_post_meta 表的结构(感谢您的 answer,Chris):
-
meta_id - 索引
-
post_id - 相关帖子的 ID
-
meta_key - 字段名称
-
meta_value - 字段值
,我们可以使用这个查询:
INSERT INTO wordpress.wp_postmeta
(post_id, meta_value, meta_key)
SELECT
tt.nid `post_id`,
tt.field_xxx_xxx `meta_value`,
'field_xxx_xxx' `meta_key`
FROM drupal.content_type_my_custom_type tt
INNER JOIN
(
SELECT nid, MAX(vid) AS MaxVID
FROM temp.content_type_my_custom_type
GROUP BY nid
) groupedtt ON tt.nid = groupedtt .nid AND tt.vid = groupedtt.MaxVID
澄清:我们插入了 3 个字段,其中
-
post_id 等于 nid
-
meta_value 等于 field_xxx_xxx(替换为您的)
-
meta_key 等于字符串 "field_xxx_xxx"
我们还进行了内部连接以选择最大 vid 值(最新版本)。
这种方法不是完全自动化的,但效果很好。
希望对您有所帮助!