freoからWordPressへのデータ移行

パソコン関連

現状の行った流れ

※かなり自己流+ちから技がエグいので、できる人は自力でどうにかできないか試したほうが良いです

そのままデータをぶち込むのは失敗した際がとてもとても怖いので、LocalでローカルのWordPressを作成し、こちらで移行データを全部作成してからAll-in-One WP Migrationのプラグインでデータを一括移行し、その後はサーバー上のデータで使用することにする。

freoからCSVでデータを出力する

SQLite使用している場合は、みさきるさんの記事を見てSQLからCSVでデータ出力をする。

MySQLを使用している場合はphpMyAdminからデータを取り出す。

まずはentryから作業する。

出力するのは下記

  • freo_entries
  • freo_categories
  • freo_category_sets

CSVで出力したものをgoogleドライブ経由でgoogleスプレッドシートで開く

ある人はExcelでもなんでも好きにしてくれ。わたしはExcel非所持なのでgoogleスプレッドシートで開いた。
freo_entriesを開いたらファイル>インポート>googleドライブ内のファイル指定する際にCSVを選ぶ→インポート場所で「新しいシートに挿入」でfreo_categoriesとfreo_category_setsを追加で挿入する

entryにcategoryを紐づける

スプレッドシートのVLOOKUPを使用して、freo_categoriesのカテゴリー名(name)をfreo_category_setsの横に表示させる。
2つ3つあるものはなんかいい感じに結合させる。

自分の場合は、if(上の行とentry_idが同じ,上の行のカテゴリー名&","&この行のカテゴリー名,この行のカテゴリー名)でまとめた。
その上で全選択して範囲の並び替え→キーをentry_idの行A→Zと上記if文でカテゴリー名を結合させた行Z→Aにする。
更にデータ>データクリーンアップ>重複の削除で必要そうなのだけ残った。

その上で、freo_entriesのidを使ってVLOOKUPでカテゴリ名を取得して横に表示させておく

entryから必要そうな列だけ残していらないのは削除する

自分の場合は下記だけ残した

  • datetime
  • status
  • title
  • text
  • 無理矢理ねじ込んだカテゴリー名

データをxml用に整形する

この手間がなければCSVで全部ぶっこめたんだよ。

スプレッドシートでいい感じに整形する。

最終的には下記の形にしたい。titleやcontentなどは順不同。

<item>
<title><![CDATA[★ここにタイトル★]]></title>
<content><![CDATA[★ここに本文★]]></content>
<date><![CDATA[★ここに日付★]]></date>
<status><![CDATA[★ここに公開状況★]]></status>
<category><![CDATA[★ここにカテゴリ★]]></category>
</item>

列と列の間に1列追加し、ちまちまと <item>★★★<title><![CDATA などと打ち込んでいく。
この★★★は後で出力してから改行にするためのもので、自分がブログで使わなそうな文字列だったら何でも良し。

出来上がったCSVデータをエクスポートで出力する。

元がCSVデータなのでいらん箇所に,や"がついてるので一括置換で削除する。(<title><![CDATA[,みたいなカラム区切りのための,や、文章を囲むための<content><![CDATA[,"ブログ記事の,や"など。だいたいついてる場所が決まってるので一括置換でどうにでもなる)
★★★を改行に変更する。(正規表現で\r\nあたりと取り替える)
<!-- pagebreak --><!-- more -->にする
リンクなどの<a href="hogehoge.com">が全部<a href=""hogehoge.com"">(CSVなのでダブルクオーテーションが2個になる)になっているので"に修正
頭と尻にxml用の<?xml version="1.0" encoding="UTF-8"?><wpiedata></wpiedata>を挿入する。

<item>
<title><![CDATA[ブログ記事のタイトル]]></title>
<content><![CDATA[ブログ記事の内容<br><p>という形にどうにかしているわけですが、</p>
途中で改行があっても大丈夫。]]></content>
<date><![CDATA[2020/01/01 01:01:01]]></date>
<status><![CDATA[publish]]></status>
<category><![CDATA[Blog,Memo]]></category>
</item>

最後にファイルを.csvから.xmlに変更する。

wordpressにデータを入れる

Import any XML or CSV File to WordPressを使う。これはXMLも取り込める優れもの。

先程作成してごちゃごちゃ手を加えたxmlを取り込ませる。新しいアイテム、投稿にする。
表示されるitemの数が自分が作成したデータ数と同じなことを確認する。違う場合はデータ作成時にどっかミスってると思うので再チェック。
自分の場合はタクソノミー、カテゴリ、タグで以下のようにしている。

これでデータが取り込める。カテゴリーは事前に作っておかなくとも無いのはいい感じに取り込んでくれる(ただしスラッグとかそこらへんは死んでる)。

お疲れ様でした、力技でentryは取り込めました。
次はページ

スポンサーリンク