ワードプレスのエクスポートデータをdrupal8にインポートする

スポンサーリンク

今回はワードプレスにツールにあるエクスポートから作成される.xmlデータをdrupal8にインポートし移行を完了させます。
それでは作業を始めましょう。
ワードプレスの管理画面のツールからエクスポートに進み、エクスポートファイルをダウンロードします。


drupalの管理画面にて4つのモジュールをインストールしてインポートの準備を進めます。
https://minokamo.tokyo/2020/03/02/486/にてインストールがうまくできない対処法を記載してあります。モジュールは以下の通りです。
wordpress_migrate
migrate_tools
migrate_plus
ctools
となります。インストールしたらこれらにチェックをつけておきましょう。
サイト構築にmigrationsが追加されているのでクリックします。


+Add import from WordPressを選択して次に進みます。ここで先ほどワードプレスからエクスポートしたものを読み込んでおきます。WXRとなってますがこれでOKです。


うまくいくと「Create new users for existing WordPress content authors?」と聞かれますので答えましょう。私はdrupalにいる現状のユーザーに割り当てるので「いいえ」としました。


次にタグ、カテゴリーをインポートするか聞かれますが今回はしないこととします。


次は大体察しがつきますと思います。
「Import WordPress blog posts as」に「記事」を、
「Import WordPress pages as」に「基本ページ」を選択することになります。


基本ページはワードプレスの固定ページにあたると思われます。
Default format for text fieldsはベーシックHTMLが無難でしょう。
「ID to assign to the generated migration group」や「ID to prepend to each generated migration」もそのままでいいと思います。


インポートしたいものを実行します。


次の画面でインポートにチェックを入れ実行をおす。



と思いきやここまできてエラーが発生。内容は次の通り。

The website encountered an unexpected error. Please try again later.

web検索にて調べてみてもなかなか成果が得られず、日本語の検索結果は皆無であった。
が諦めずに頑張ってみた。
ここまで簡単に書いているが対処法が見つかったので記述します。
drupalの構成ファイルであるMigrateToolsCommands.phpに次の変更を加えます。
私の場合は/var/www/drupal/modules/migrate_tools/src/Commandsに存在する。

public const DEFAULT_ID_LIST_DELIMITER = ':';
を削除。
'idlist-delimiter' => self::DEFAULT_ID_LIST_DELIMITER,
を
'idlist-delimiter' => MigrateTools::DEFAULT_ID_LIST_DELIMITER,
に変更。
この変更は全部で3か所あった。

まだある。MigrateTools.phpに変更を加えます。/var/www/drupal/modules/migrate_tools/にありました。

use Drupal\migrate_tools\Commands\MigrateToolsCommands;
を削除。
const DEFAULT_ID_LIST_DELIMITER = ':';
を追記。【class MigrateTools {】の下に記入する。
'idlist-delimiter' => MigrateToolsCommands::DEFAULT_ID_LIST_DELIMITER,
を
'idlist-delimiter' => self::DEFAULT_ID_LIST_DELIMITER,
に変更。

さらに。DrushTest.phpも変更する必要がある。
/var/www/drupal/modules/migrate_tools/tests/src/Kernelにあるはずです。

use Drupal\migrate_tools\MigrateTools;
を追記。
'idlist-delimiter' => MigrateToolsCommands::DEFAULT_ID_LIST_DELIMITER,
を
'idlist-delimiter' => MigrateTools::DEFAULT_ID_LIST_DELIMITER,
に変更。
この変更も同じものが3カ所ある。

この記述は作者の英語によるエラーの対応より、簡略化して記載してみました。
作者の対応はgitとdiffによるファイルの比較による変更が示されてましたが、gitがまだインストールされていなかったので面倒ではあるけれど一つ一つ変更しました。

これでインポートすることができました。

コメント

タイトルとURLをコピーしました