Daily Picks CSV Export
WordPress の記事をまとめて書き換える方法は、ひとつしかありません。CSVに書き出して、Excel で直して、読み戻すことです。
そして、戻したときに静かに壊れるものがあります。
何が壊れるのか
コードブロックのバックスラッシュが消えます。
Windows のパスのような文字列を含む記事を往復させると、バックスラッシュが1段消えます。警告は出ません。
ブロックエディタの本文が崩れます。
ブロックエディタは属性の中でユニコードのエスケープ表記を使っています。これが壊れると、ブロックが丸ごと壊れます。 特殊な記事ではなく、ブロックエディタで書いた記事の大半が対象です。
公開日を直すと、RSS と API だけが古い日付を配信し続けます。
管理画面の表示は新しい日付に変わるのに、post_date_gmt が古いまま残るためです。読者とフィードを拾っている外部サービスに、直接出ます。
このプラグインがすること
書き出したものを Really Simple CSV Importer で読み戻すと、元のまま戻ります。
実際のサイトで測った結果です。
- 467件を点検して、もともとのずれは0件
- Windows のパスが17個入った記事が、往復後にバイト単位で同一
- 公開日を1分ずらすと GMT のずれが再現し、補正後は管理画面・REST API・RSS の3か所すべてが正しい日時に
読み込む前に、壊れているものを止めます
CSVを読むだけで(保存も読み込みもせずに)、次を検出します。
- 列がずれ始める行
- 末尾のバックスラッシュが奇数個になっているセル
- Shift_JIS で保存されたファイル
- カスタムフィールドになってしまう列
- 存在しない記事ID
- ID列が無い場合(全行が新規作成になることを事前に警告します)
無料版と有料版
無料版は WordPress.org で配布しています。 本体の列(タイトル・本文・抜粋・公開日・スラッグなど)の往復と、読み込む前の点検が入っています。
有料アドオン ¥2,980 は、カスタムフィールドとタクソノミーの往復です。
ここにも、知られていない壊れ方があります。
郵便番号の先頭のゼロが消えます。
カスタムフィールドに 00123 と入っていると、Excel で開いて保存するだけで 123 になります。 郵便番号、電話番号、商品コード。警告は出ません。
そして CSVファイルだけを見ても、元が 00123 だったのか 123 だったのかは分かりません。 このアドオンはデータベースの値と比べて検出します。
配列が文字列に化けます。
カスタムフィールドの配列は、読み戻すと「配列の形をした文字列」になります。編集していなくても、です。 プラグイン側には配列の代わりに文字列が渡されます。エラーは出ません。
空のセルが値を消します。
本体の列と違い、カスタムフィールドは空のセルで上書きされます。
有料アドオンはこの3つを全部ふさぎます。値を消したいときは削除の印を書き、消える対象は読み込む前に全部表示されます。
買い切りです。期限はありません。