我正在尝试改进 wordpress 到 drupal 8 迁移模块(https://github.com/amitgoyal/d8_migrate_wordpress)并添加导入分类术语的功能。我已经编写了将分类术语加入帖子的查询,但是无法将多个术语分配给我的 drupal 内容类型文章的字段(称为标签,这是对分类术语的实体引用)。我创建了一个清单文件,用于映射到我的文章内容类型:
id: posts
label: Wordpress Posts
migration_groups:
- Wordpress
source:
plugin: posts
destination:
plugin: entity:node
process:
nid: id
vid: id
type: type
langcode:
plugin: default_value
default_value: "und"
title: post_title
uid: post_author
status:
plugin: default_value
default_value: 1
body/value: post_content
body/format: normal
field_image/target_id: post_image
field_tags/target_id: terms
在处理 wordpress 数据的所有获取和处理的 posts.php 文件中,我有一个函数(prepareTerms),它设置上面的 yaml 文件使用的属性“terms”。如果我将其设置为单个值,那么一切都按预期工作:
$terms = '4';
$row->setSourceProperty('terms', $terms);
但是,我想将此属性设置为数组(用于多个分类术语),如下所示:
$results = $query->execute()->fetchAll();
$terms = array();
foreach($results as $term) {
$terms[] = $term['term_id'];
}
//$terms = Yaml::dump($terms);
$row->setSourceProperty('terms', $terms);
由于每个分类术语都应该是一个数字(术语 ID),我应该只是传递一个整数数组,但我似乎无法将其映射到“field_tags”。在posts.php中设置'terms'属性之前,我尝试过使用Yaml::dump。我也尝试过更改 yaml 模板以对它们进行硬编码,如下所示:
field_tags/target_id: [1, 2]
field_tags/target_id: {0:1, 1:2}
field_tags: {target_id: 1, target_id:2}
链接是我创建的一个虚拟节点的屏幕截图,我在其中分配了两个分类术语(通过 devel 加载) - http://imgur.com/nkqQoNG
任何帮助更强烈的赞赏!