WordPress 記事投稿で 記事もあまりないのにIDが謎に増えている件

こんにちは。

はじめに

WordPressを使って記事を書くのをはじめたばかりの方であれば、「ん?これはなぜ?」と思うことがあるのではないでしょうか?あまり気にならないでしょうか?

まず下の画像を見てみてください。

これは、WordPressの《投稿》-《投稿一覧》画面で、IDを降順にソートしてキャプチャしたものです。
まず見て気になるのは現時点でのIDの最大値が401となっており、しかもその前が371とその差30。その前もかなり飛び飛びの歯抜け状態になってしまっており、これが私は気持ち悪くてしょうがありませんでした。ちなみに、この時点での記事数は公開・非公開含めて15記事程度です。15記事程度なのに既にIDは400…。IDが増えていくスピードが早すぎやしませんか?

この件について、なぜなのか?IDは他のものに使われているのか?
飛び飛び歯抜けにならない方法はないのかを少し調べてみることにしました。

IDが増え続ける理由

データーベースの中の該当テーブルを直接見てみてみると、この《記事ID》は《wp-post》というテーブルの中の《ID》に相当するカラムです。
やはり飛び飛びになっており、そして《post_status》というカラムにその理由になりそうなものがありました。
※テーブル名《wp_post》の接頭語「wp_」は、WordPress構築時に各自決めた任意の文字列です。

そして、理由はWordPress公式ドキュメントの中の「投稿ステータス」の章に書かれていました。

WordPressは通常、投稿時に下記のステータス(8つ)があるようです。

  • 公開済 (publish) 
  • 予約済 (future)
  • 下書き (draft)
  • 承認待ち (pending)
  • 非公開 (private)
  • ゴミ箱 (trash)
  • 自動保存 (auto-draft)
  • 継承 (inherit)

このステータスというのが、先程挙げた《post_status》のカラムに格納されているようです。
更に詳しく見てみると、公開済み・予約済・下書きなどは記事についてのものなので気になりませんが、気になったのが自動保存《auto-draft》と継承《inherit》。

  • 自動保存《auto-draft》 :
    編集中に WordPress が自動的に保存した リビジョン です。

  • 継承《inherit》 :子の投稿(添付ファイル/en や リビジョン)に割り当てられ、実際のステータスは親投稿のステータスによって決まります。

自動保存はWordPressが編集画面で自動的に保存する際、リビジョンが増えていくタイミングで使用されるのでしょうか。継承は、記事を投稿する際に添付している画像などを保存するのに使用されるということのようです。そのため、このテーブルのidが知らないうちにどんどん消費されていく…気持ち悪くてしょうがありません。

なぜ…

それを踏まえた上でデータベース内を見てみると、《wp_post》テーブルの中に確かに画像ファイルがアップロードした分だけ登録されていました。投稿記事と画像のテーブルを分けることは、考えなかったのか?なぜこんな仕様にしてしまったんでしょう。不満だらけですが、従うしか無いのがCMSを使う定め…。

おわりに

仕様だということでどうしようもない部分もありますが、自動保存やリビジョンの管理は機能を無効にできるようなので、可能な部分はチューニングを施しIDの無駄消費は抑えていく運用をしたいと思います。

自動保存機能とリビジョン機能の停止は、「WordPressインストール後 記事投稿前に行っておくべきおすすめ設定」で解説していますので、ご参考いただければと思います。