蓄積してきた記事はそのままに!XOOPSからWordPressへのデータ移行

XOOPSとWordPress WordPress

レンタルサーバーのPHPアップデート。近年立て続けにバージョン「7」へリプレイスされました。そして次は「8」になっていきます。

そうなると運用サイトがXOOPS(ズープス)の場合、それはそれは、いち大事!XOOPSは残念ながらPHP8では動かないのです。

弊工房の顧客にはXOOPSで運用している会社さんがたくさんあって、2~3年前から(今後どうしていこうかなぁ)といろいろ考えていました。みんな止まっちゃう。
サイト運用を継続させていくためにも、WordPressとか主流のCMSへ乗せ換えがしたい……。そしてできることならXOOPS→WordPressへ「データ移行」をしたい……。

当初は、乗せ換えといってもまったく別のCMSなわけだから、そんなにすんなりいくか~?、とやや腰が引けていました。正直めんどうだなぁと(顧客のみなさんスミマセンw)。それでも、新規でWordPressをインストールしてゼロベースからの構築になるのかなぁ、お客さんの費用負担がでかいしなぁ、と思いながら、なんとかかんとか空いた時間を見つけて触っていたところ、なんとXOOPS→WordPressへの「データ移行」に成功してしまいました……!やった。

というわけで、ただいま順々に顧客に提案しています。おかげさまでこの1年けっこうな数の作業をこなしましたので、XOOPS→Wordpressへの「データ移行」作業をまとめてみました。やる前は(うわ~データベースを触るのなんかめんどうそうだなぁ・・・)と思っていたけど、いざやってみたらけっこういけました。なので備忘録。これからやる人はよかったら参考にしてください。

おおまかなイメージ

XOOPS→WordPressへまるっと移行、ではなく、コンテンツごとにバラバラに移行するのがポイントです。

まずは、新規でWordPressを用意。コンテンツ用にカスタム投稿タイプを各々準備します。そこへモジュールごとにデータを移行するイメージです。ブログモジュールはpostへ移行。

おおまかにこんなイメージです。

pico→ カスタム投稿タイプpico
myalbum→ カスタム投稿タイプmyalbum
d3blog→ post

ローカル環境を用意

できればローカル環境を用意して、そこでトライしたほうがいいですね。エラー文が出てトラブるようなことはほとんどないとは思うけど、データがどのように移行されるのかテスト環境で確認したほうが間違いが少ないと思います。いきなり本番サイトへ移行して、思ったところにきちんとデータが入らなかった場合、全データを巻き戻すはめになり、萎えます。

記事タイトルと本文をcsvでエクスポートしよう

モジュールのデータをそっくり移行しようとはせず、記事の「タイトル」「本文」これだけをcsvでエクスポートします。
ちなみにカテゴリーのテーブルは移行しなくてよいです。WordPress側インポートしたあとに、手作業でカテゴリー名を変更していく手順でだいたいいけます。

phpMyAdminを開いて以下を選択します。

picoの場合(接頭辞)_pico_contents
myalbumの場合(接頭辞)_myalbum_photos.csv
(接頭辞)_myalbum_text.csv
※2つを合体させてひとつのcsvファイルにします
d3blogの場合(接頭辞)_d3blog_entry
phpMyAdmin
picoの場合
エクスポート方法:詳細-可能なオプションをすべて表示
フォーマット:[CSV]を選択
出力:ファイルの文字セット[SHIFT_JIS]を選択 ※1
フォーマット特有のオプション:[1行目にカラム名を追加するに]にチェックを入れる
エンコーディングへの変換:[SJIS]を選択 ※1
[エクスポート]をクリックする

※1 ExcelはSHIFT_JISで読み込まれるため、それ以外の文字セットだと文字化けします。それでもうまくいかない場合は、エンコーディングへの変換は「なし」でエクスポートするなど、組み合わせをいろいろやってみてください。レンタルサーバーによってまちまちでしたので。

csvファイルを編集しよう

エクスポートしたcsvファイルを開いてみましょう。文字化けはしていませんか?文字化けしていたら文字セットに注意してもう一回phpMyAdminでエクスポートしてみてください。

OKだったらファイルを保存します。その際「UTF-8」で保存してください。Excelの「ファイル」メニューから「名前をつけて保存」をクリックし、ファイル形式「CSV UTF-8(コンマ区切り)(.csv)」で保存します。

【picoでextra_fieldsがある場合】

extra_fieldsのデータはcsvでひとかたまりのテーブルになるため、各々入力フィールドを抽出するのが大変……。残念ながら一括でインポートができません。私は、WordPressへ移行後にAdvanced Custom Fieldsプラグインをインストールして手作業でコピペしました……(超めんどかったw)

【d3blogの場合】

ブログの場合は日付データも正確に移行したい。XOOPSの日にちはUnixtimeを使っているので、csvファイルを編集して「2023/8/1 10:20」みたいに変換します。やりかたは「unix時間 変換 excel」でググったら山ほどハウツーページが出てきましたので、カッツ・アイ。

WordPressにインポートしよう

さあ、いよいよWordPressへインポート。最後の工程です。

【固定ページに移行する場合】

親ページが必要であれば、事前に固定ページで親ページを作成しておきましょう。

【カスタム投稿タイプに移行する場合】

WordPressへのカスタム投稿タイプの準備は済んでいますか?今一度確認。

編集したcsvファイルを、WP All Importプラグインでアップロードしていきます。

WP All Importプラグインの使い方はいろんなサイトで説明がされていますので、ググってみてくださいね。

WP All Importプラグイン
picoの場合

おわり

お疲れ様でした~。どうでしたか?うまく移行できましたか?自分でやってみて、どうしてもうまくいかなかったら弊工房までご依頼くださいな♪

ただ、作業料金は、残念ながら決して安くはありません。結局CMSを新規で立ち上げるわけだから、構築費はゼロベースとはいかないまでもそこそこかかります。
できうることならリニューアルも兼ねてやりましょう!そのほうがメリットがデカいです。ちなみに弊工房の顧客のみなさんはだいたいのサイトが全面リニューアルで、とっても喜んでもらいました。XOOPSサイトの場合、運用が10~15年以上とかざらだと思いますので、これを機に新たに見直すいい機会ととらえて移行を検討すると良いと思います!

追記:2024年8月27日

フォーラム系モジュールのデータ移行は、なかなか大変でした……。システム会社E社と協業で一度やって無事納品までできたんですけど、結果えらい目に遭いました……。データが複雑でムズすぎる!E社のT社長とも「もう二度とやりたくないね……(^^;」となったのでフォーラム系モジュールにつきましては今後はお請けできません。さーせん。

トップへ戻る
タイトルとURLをコピーしました