freoからWordPressへのデータ移行

パソコン関連

pageの作業

主に小説、それから同人誌に使用していたpageの移行作業。
基本的にはentryと同じだけれども少しだけ違う箇所がある。

また、私は小説ページのみの取り込みとした。
理由としては、同人誌詳細ページはオプション使いまくって作ってるのでオプションの移行が死ぬほどだるいこと、また表紙用の画像が10年前に作成したものはサイズがちっちゃいので大きく作り直したいことがある。
30件弱ならまあ手作業でなんとかなるだろ。

    データの出力

    entryと同じ方法でデータをCSVで出力する。
    何度もいうけれどもCSVで取り込める場合はCSV取り込んだ方がいい、絶対良い。

    出力データはページ格納テーブルfreo_pages
    やる気があるならオプション格納テーブルとオプション関連付けテーブルも引っ張ってきてどうにすれば良いのかもしれないが、このあたりは手作業でするからいいかと諦めた。

    いらないものの削除

    ここで問題が起きた。
    私の場合は文字数がめちゃくちゃに多かったのでcassava editorで開くのも困難になり、googleスプレッドシートに移動したのものそれでもめちゃくちゃ重たかった。
    とはいっても全体のデータ量で見ると21Mぐらいなので、複数セルに文字がわけられているのではなく、ひとつのセル(本文部分)に大量に文字が入ってるのが悪かったんだろう。多い小説では7万字ぐらいぶち込んである。

    開いたら、本体のテーブル構成を見て必要なものだけ残していく。

    私が残したのは下記

    • id
    • pid
    • status
    • title
    • datetime
    • text

    小説の表示にfreoのページ一括表示プラグインを使用していた。

    ジャンル1
    ├カプA
    │├小説
    │├小説
    │└小説
    ├カプB
    (略)
    ジャンル2
    (略)

    こんな感じに複数のジャンルとカプを使用していたので、そのあたりの変換に便利かなとpidを残した(めっちゃ使った)

    pid(親ID)を利用してタームを入れられるようにする

    まずはpidをどうにかする。
    Import any XML or CSV File to WordPressは入力時にタクソノミーの指定もできる。
    小説はWordPressではカスタム投稿タイプを使用すると決めていた。そのため、タクソノミーを事前に作成して紐づけておく(ターム自体はまだ作ってない)。
    その上で、親IDを利用してタクソノミーのタームに流し込めるようにする。タームとかタクソノミーとか正直書きながら合ってるか?って不安だから違ったら脳内変換掛けて……

    ジャンル1(genre1)
    ├カプA(genre1/cpA)
    │├小説(genre1/001)
    │├小説(genre1/002)
    │└小説(genre1/003)
    ├カプB(genre1/cpB)
    (略)
    ジャンル2(genre2)
    (略)

    ここから手作業。できる人はどうにか自動化してほしい。

    CSVファイルを上から見ていって、pidのセルに入っているのがgenre1/cpAだったらジャンル1>CP1となるように一括置換をかけていく。
    同じようにgenre1/cpBだったらジャンル1>CP2になるようにと上から作業していく。

    ついでに本文が空のもの(私の場合は上記の場合genre1やgenre1/cpAなどは一括表示プラグインでずらっと表示させる分類のために使用しており、本文は何も入っていない)は行ごと削除する。
    更にはidにnovelが入っていないもの(小説以外のもの)は全部削除する。

    xmlに必要なものをつける。

    上記と同じく囲んでいく。
    このあたりで別にidとかauthoridとか何でもいいな?取り込むときには同じもので囲んでいるかしか見てないな?と気付いたので、手を抜いてかなり汚いかたちにねじ込んだ。

    <item>
    <id><![CDATA[★ここにid★]]></id>
    <authorid><![CDATA[★ここにpid★]]></authorid>
    <date><![CDATA[★ここにdatetime★]]></date>
    <status><![CDATA[★ここにstatus★]]></status>
    <title><![CDATA[★ここにtitle★]]></title>
    <content><![CDATA[★ここに本文★]]></content>
    </item>

    CSV整形

    entryと同じく出力してから,だの"だのを削除。

    WordPressにデータをいれる

    できたものをImport any XML or CSV File to WordPressを使用して流し込む。

    これのうち、「投稿sがある階層」のほうを選択(画像撮り忘れたので使いまわし)。
    下階層のみの設定をした。これで後からタクソノミー.phpあたりで一括表示させるときにやりやすい。
    それ以外はだいたいentryと同じ。

    だいたいエラーが発生するので修正

    本来あるはずのデータ数と取り込むはずのデータ数がずれてたら、表示できる最後のデータを見て、その近辺のデータ見てどこがおかしいのか確認する。</item>閉じ忘れ、古いTwitterの表示にCDATAを使用していたなどいろいろあるので根気よく対応していく。

    気が向いたら画像も取り込んで出来上がり

    画像はWordPressだと保存場所が違うのでもう諦めろ。どうにか自力で手修正して出来上がり!!!

    何度も書くけれども、これは何故かCSVで取り込めない人のための面倒くさい方法です。CSVで取り込めるならそのほうが絶対楽です。
    私の場合は何故かデータ内容,データ内容でも"データ内容","データ内容"でも区切りが認識されない箇所があったため、わざわざxmlに一度変更する羽目になりました。でもやらんでいいならそのほうが絶対良い。
    文字コード変更も駄目、""ではなく’に変更も全部駄目、CSV取り込みプラグインを変更しても駄目、何を消せば入力できるのかと確認したら『2』を消したときだとか『更』があると駄目とかでも別の行だとOKだとかわけわからんのでいちいち原因抽出するのが手間すぎてやめました。

    こんな特殊な状態の人ほとんどいなくて普通にCSVで移行できるんだろうけれども、誰かの役にたったなら幸い。

    スポンサーリンク