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;
}
これは基本的に、「2012/05/figure1.jpg」のような wp_postmeta テーブルから画像名と相対パスを返します。次に、次のように prepareRow() を使用します。
function prepareRow($row) {
$row->images = $this->getImages($row);
}
ファイル フィールドを処理する新しいような移行モジュールの使用方法には、何かおかしな点があると思います。SQLはファイル名を正しく出力しますが、画像がコピーされているようには見えません。これは、Migrate 2.4 を使用する Drupal 7 です。どんな助けでも大歓迎です。