freoからWordPressへの移行(まだ途中)

パソコン関連

現状できたところまでのメモがてら。

もっとスマートな方法があると思います。これは何故かCSVでインポートできない人のための力技です

現状の自分の条件

  • CSVでデータ移行しようとすると想定外の箇所で区切られてタイトルと日付がくっつくような謎なデータ異常が起きる
  • entryがだいたい700件ぐらい、ページが1000弱ぐらい
  • freoのデータはMySQLで作成している

freoからWordPressに変更する理由

  • PHP8に正式対応していない
  • 対応したとしてもかなり自分の好き勝手に弄り倒しているので今更修正や書き換えが対応できる気がしない
  • 自分のレンタルしているサーバーがPHP8に対応した

変更後の想定

  • 今までentryで行っていたブログはWordPressでは通常の投稿で行う
  • 今までpageで行っていた小説や同人誌一覧などはカスタム投稿タイプを使用して行う

現状の行った流れ

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

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

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

まずは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から必要そうな列だけ残していらないのは削除する

本体のテーブル構成 | freo.jp

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

  • 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データなのでいらん箇所に,や”がついてるので一括置換で削除する。
★★★を改行に変更する。
<!– pagebreak –>を<!– more –>にした上で、<p></p>で囲まれてるようなら<p>を削除する
リンクなどの<a href=”hogehoge.com”>が全部<a href=””hogehoge.com””>になっているので”に修正
頭と尻にxml用の<?xml version=”1.0″ encoding=”UTF-8″?><wpiedata>と</wpiedata>を挿入する。

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

wordpressにデータを入れる

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

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

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

お疲れ様でした、力技でentryは取り込めました。
pageも行う作業としてはほぼ同様で、R18指定とかなんとかをオプションでやってる場合はそれをいい感じに自力でどうにか追加してどうにかするとどうにかなる。

何度も各けどCSVでやれそうならCSVでやったほうが早い。

コメント

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