WordPressの投稿には、記事を公開した「投稿日時」、更新した「更新日時」がそれぞれ記録されています。
その記事がいつ書かれたのか、いつ更新された情報なのかは重要な指標となるため、私はできるだけ書き記すようにしているのですが、特に「更新日時」はふとしたきっかけで簡単に書き換わることが多いです。
例えば別のシステムからブログ全体を引っ越してきたり、一括して記事をインポートしたりすると、すべての記事の更新日がインポート日などですべて書き換わってしまうことがあります。
これでは更新日が役に立たない情報となってしまいますので、これをCSVファイルにして一括編集する方法をご紹介します。
私の事例
WordPress標準では、記事の「更新」ボタンでまず書き換わります。これはプラグインなどで更新日を書き換える、あるいは誤字修正等の簡単な更新の場合はそもそも更新日を書き換えないことができます。
これはこれでfunction.phpを使って調整しているのですが、この方法だと記事1つ1つでしか変更できません。
先日、このブログ全体の改修をしていたのですが、実験環境から本番環境へデータを移動していた際に、すべての記事がインポート時刻で更新日が上書きされてしまいました。記事の内容は変わっていませんので、これでは更新日の意味が無くなってしまいます。
このため、数百記事ある記事の更新日を一括して編集する必要がでてきたのですが、上記の通りプラグインによるものでは目ぼしいものが見つかりません。
WordPressが間に入ると駄目?
カスタムフィールドを含めてCSVで出力できるプラグイン「WP CSV Exporter」と、インポート項目を拡張できる「Really Simple CSV Importer」というプラグインの組み合わせを別のウェブサイトで重宝しているのですが、これを使って更新日時を記録している「post_modified」を書き換えてからインポートしても、インポート日が更新日時として上書きされてしまいました。
どうやらインポートという行為自身が「更新」と判定されてしまうようです。
WordPressの更新日を書き換える機能を一時停止することができればよいのですが、その方法がよく分からなかったので、データベースを直接操作することにしました。
要はWordPressが間に入らなければよいので、レンタルサーバーの「phpMyAdmin」へアクセスし、記事が記録されている「wp_posts」をCSVでダウンロードして編集する方法でいこうと思い立ちました。
phpMyAdminからCSVファイルをダウンロードする
それでは早速、レンタルサーバーのphpMyAdminへアクセスしてみます。
当方では「エックスサーバー(Xserver)」を利用していますので、この記事ではエックスサーバーでの画像になります。他のサーバーをご利用の場合はそのサーバーでのアクセス方法をご確認ください。
記事データのバックアップは必ず行ってください!
データベースを直接操作する方法となりますので、万が一操作を間違ったりすると全記事データの喪失を招く場合があります。
データベースというのは基本的に自動バックアップなどは働いていませんので、データが消えてしまっても復旧はほとんどできません。事前にバックアップをしっかり行ってから操作してください。
エックスサーバーへログインし、対象のドメインを指定した後、データベースの「phpmyadmin」を選択してください。
ログインするための「ユーザー名」と「パスワード」を入力してください。
もし、ユーザー名とパスワードが分からなくなった場合は、少し邪道な方法ですが手っ取り早い方法として、WordPressをインストールしたディレクトリにある「wp-config.php」をFTPソフトなりで取得、中身を開くと30行前後にデータベースのユーザー名とパスワードが記載されていますのでここで確認が取れます。
用が済んだらダウンロードした「wp-config.php」は削除しておきましょう。
「phpMyAdmin」へアクセスできたら、左のメニューでデータベース名を開き、「wp_posts」を選択してください。
このデータベースにWordPressの記事データがすべて記録されています。このデータベースをCSV形式でダウンロードするため、上部メニューの「エクスポート」を選択します。
「CSV」形式でエクスポートしたいので、以下のように設定します。そのほかの項目はそのままでOKです。
●エクスポート方法 : 「詳細」
●フォーマット : 「CSV」
●1 行目にカラム名を追加する : 「チェックを入れる」
最後に「実行」を選択すれば「wp_posts.csv」がダウンロードされます。
CSVデータをGoogleスプレッドシートで編集
上記手順で「wp_posts.csv」がダウンロードできましたので、ではこれをExcel等で編集すればよい訳ですが、ここでひとつ問題が生じました。
一般的にCSVファイルの編集と言えば、Microsoftの「Excel」がよく使われるかと思いますが、実はExcelの仕様として「1セルに対して32,767文字まで」の入力制限があります。
先ほどダウンロードしたCSVファイルはWordPressの記事データすべてが入っています。つまり、記事本文のデータも1セル分に入っているのですが、長文記事となるとExcelではこの上限により正しく開けない現象が発生します。
また、Excelは「UTF-8」という文字コードで書かれたファイルを開くと高確率で文字化けしますので、これの調整も手間です。
このため、Excel以外を利用する必要があるのですが、手っ取り早く編集したいので代替として「Googleスプレッドシート」を利用してみたいと思います。
https://www.google.com/intl/ja_jp/sheets/about/
「Googleスプレッドシート」は、名前の通りGoogleが提供するアプリケーションの1つです。
Googleのアカウントを取得していれば無料で利用できるサービスで、MicrosoftのExcelのような表計算ソフトを利用できます。
Excelと違って「UTF-8」コードでも正しく表示され、かつ1セルの文字数上限も非常に大きいようで「wp_posts.csv」が持つ記事データすべてを問題なく開くことができました。無料で利用できるものながら大変高機能です。
Googleスプレッドシートに読み込む
Google スプレッドシートへアクセスします。Googleアカウントを取得済みであればログインしてください。
スプレッドシートが開いたら、右側にある「ファイル選択ツールを開く」ボタンを選択します。
「アップロード」タブを選択し、画面真ん中へ先ほどダウンロードした「wp_posts.csv」をドラッグ&ドロップしてアップデートしてください。
更新日時を編集する
データが読み込まれたら一通りデータが正しく表示されているか確認してみましょう。文字化けはないか、セルがずれていないかなどを確認します。
特に問題ないようであれば、ここで「更新日時」を編集していきます。注目するデータは以下の4つです。
- post_date : 投稿日時
- post_date_gmt : 投稿日時(グリニッジ標準時)
- post_modified : 更新日時
- post_modified_gmt : 更新日時(グリニッジ標準時)
https://ja.wikipedia.org/wiki/グリニッジ標準時
投稿日時と更新日時、それぞれ日本時間とグリニッジ標準時で記録されています。
ここを編集すれば更新日時を一斉に書き換えることができます。操作はExcelとよく似ていますので、後は目的とする更新日時となるよう調整していきます。取り急ぎ「投稿日時」と同じにしたいのであれば、「post_date」の値を「post_modified」へそのままコピーすればOKです。
記事の読者が主に日本であれば「post_modified」だけ書き換えればいいのですが、データの整合性を取るために「post_modified_gmt」も調整しておきたい場合は、日本時間から「マイナス9時間」ずらせばグリニッジ標準時になります。
もしA1セルを基準にして9時間引く場合は以下のように数式を書きます。
=A1-"09:00"
編集が終わったら、上部メニュー左上の「ファイル」→「ダウンロード」→「カンマ区切りの値(.csv、現在のシート)」を選択して編集済みのCSVデータをダウンロードしましょう。
phpMyAdminでCSVファイルをインポートする
再度「phpMyAdmin」に戻り、同じく「wp_posts」を開いたら今度は「インポート」を選択してください。
そしてインポート画面で下記のように設定します。
- アップロードファイル : 調整したCSVファイルをアップロード
- フォーマット : 「CSV」
- Update data when duplicate keys found on import (add ON DUPLICATE KEY UPDATE) : チェックを入れてください
「Update data when ~」は、重複キーがあったときにデータを更新することを許可する項目です。今回は新しいデータを追加するわけではありませんので、チェックを入れないと既存のデータが上書きされません。
最後に「実行」でインポートを開始し、正しく書き換えられれば成功です。WordPressに戻って各記事の「更新日時」が書き換わっていることを確認してください。
まとめ
ひとつの記事の更新日時を変更するプラグインや改造方法はよく載っているのですが、一括して変更する方法はあまりありませんでしたので、今回記事にしてみました。
特にGoogleスプレッドシートがかなり優秀だったことには驚きました。正しくコードを読み込んでくれますし、作業が大変しやすかったです。
今回は「wp_posts」という、WordPressで管理されている記事データすべてが記録されているデータベースを操作しました。ここには記事本文も入っていますので、同様の手順を行えば全記事本文を一括して編集することもできます。
色々応用が利きますので、今後も覚えておくと何かあったときに役立つかと思います。
コメント
コメント欄を開く