我有时间使用Migrate 2.4模块将图像从Wordpress迁移到Drupal。这是我的映射:
$this->addFieldMapping('field_image','images');
$this->addFieldMapping('destination_file', 'images');
$this->addFieldMapping('field_image:source_dir')
->defaultValue('/Users/grafa/htdocs/wordpress/wp-content/uploads');
$this->addFieldMapping('field_image:file_class')
->defaultValue('MigrateFileUri');
图像来自查询wp_postmeta表的函数,然后将结果返回到prepareRow()函数。
function getImages($row) {
$post_id = $row->id;
$results = db_query("
SELECT pm.post_id, pm.meta_key, pm.meta_value FROM streetroots_wp.wp_postmeta AS pm LEFT JOIN streetroots_wp.wp_posts AS p ON pm.post_id=p.id WHERE p.post_parent = $post_id AND pm.meta_key='_wp_attached_file';");
$images = array();
foreach($results as $result) {
$images[] = $result->meta_value;
}
return !empty($images) ? $images : NULL;
}
这基本上返回了wp_postmeta表中的图像名称和相对路径,如'2012/05 / figure1.jpg'。然后我像这样使用prepareRow():
function prepareRow($row) {
$row->images = $this->getImages($row);
}
我猜测我是如何使用处理文件字段的new-ish migrate模块的。 sql正确输出文件名,但似乎不会复制图像。这是使用Migrate 2.4的Drupal 7。任何帮助表示赞赏。
答案 0 :(得分:1)
您可能需要查看migrate_example文件夹中的beer.inc行377 - 383以及关联的内容类型* migrate_example_beer *,其中图像字段定义的不是文件字段,这是我的错误导致我的图像没有被填充。
希望这有帮助!
答案 1 :(得分:0)
迁移2.5大大简化了文件的处理,你应该检查一下!