4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WordPress メディアライブラリのゴミ箱機能には大きな罠がある

Posted at

WordPress でメディアライブラリに入っている画像やファイルは [完全に削除] しかありません。
記事や固定ページにはゴミ箱機能があり、一旦削除したものがゴミ箱に入るのに、なぜメディアライブラリにはゴミ箱機能ないのでしょう?

実はメディアライブラリにもゴミ箱機能はあるのですが、標準で OFF になっているのです。
では、ON にするとどのような動作をするのか検証してみました。

そもそも調査と検討を始めた理由

※ここは重要ではないので、読み飛ばしてもらって OK です。

WordPress のユーザーを削除すると、ユーザー所有のコンテンツもまとめて削除する機能があります。
いや、これはむしろ罠かと思う機能で、操作方法を知らないユーザーがコンテンツをまとめて削除する事故が発生したりしています。

このような悲しい事故が発生したときでも、メディアライブラリのゴミ箱機能を有効にしていれば、比較的容易に復旧できそうということが検証でわかりました。

メディアライブラリのゴミ箱有効化

wp-config.php に設定を追加するだけです。

define( 'MEDIA_TRASH', true );

でも、わざわざ有効化にしないといけないのには理由がありそうです。
はじめは過去の互換性のために OFF にしていると思っていましたが、どうやら違いそうです。

メディアライブラリのゴミ箱はなにが罠なのか?

問題が発生する手順を簡単にまとめます。

  1. メディアライブラリに test.jpg にアップロードします。
    内部的には wp-contents/uploads/2022/03/test.jpg にアップロードされました。
  2. 記事 A にメディアライブラリから test.jpg を貼り付けて更新します。
    記事 A を Web ページとして確認し、 test.jpg が表示されていることを確認できます。
  3. メディアライブラリから test.jpg をゴミ箱に移動します。
  4. test.jpg をゴミ箱に移動したのに、相変わらず記事 A には test.jpg が表示されていることを確認できます。
    当然、内部的には wp-contents/uploads/2022/03/test.jpg はまだ存在しますので表示されています。
    ただし、WordPress のメディアライブラリを管理しているデータベース内部では test.jpg はゴミ箱に入っているフラグが立っています。
    ( wp_post テーブルの post_statusTrash に設定されます。)
  5. ゴミ箱に入れたメディアは 30 日経過すると自動的に削除されます。
    データベース上のレコードと、実際のファイルが削除されるタイミングはここです。

    (※日数は EMPTY_TRASH_DAYS で変更できます。)
  6. 何もしていないのに突然、記事 A から test.jpg が表示されなくなります。
    この頃には test.jpg をゴミ箱に入れたことなど忘れられているでしょう。
    また、この動作はログに記録されるわけではありません。

通常、記事をゴミ箱に入れると、上記の 4. のタイミングで Web 表示されなくなります。
ただし、コンテンツの場合は内部的なパス wp-contents/uploads/2022/03/test.jpg のファイル自体を参照するため、ゴミ箱に入れてもファイルはそのまま存在するため Web 表示されたままになってしまうのです。

ここで、記事とコンテンツのゴミ箱動作の差異が発生します。
コンテンツをゴミ箱に入れた瞬間に Web 表示されなくなれば操作した際に誤操作を思い出しやすいのですが、30日経って突然消えてしまう動作をされた場合は原因の調査のしようもありません。
自分以外の誰かが削除していたときには、更に調査は絶望的でしょう。

ですので、WordPress のメディアライブラリのゴミ箱機能は標準で OFF になっているのです。

まとめ

WordPress のメディアライブラリのゴミ箱機能は、リスクを承知の上で ON にしないと危険です。
このことに触れている記事が検索した限り見当たらなかったので、検証結果として残しておきます。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?