• WordPressのゴミ箱はEMPTY_TRASH_DAYSで自動削除までの日数を変える

WordPressのゴミ箱はEMPTY_TRASH_DAYSで自動削除までの日数を変える

公開日: 執筆:佐藤

WordPressのゴミ箱から自動で完全削除されるまでの日数は、wp-config.phpのEMPTY_TRASH_DAYSで変えられます。標準は30日です。ただし、30日後の同じ時刻に必ず削除されるわけではありません。期限を過ぎた項目は、日次のWP-Cronが次に動いたときに削除されます。

値を0にすると保存日数が0日になるのではなく、ゴミ箱そのものを使わず、削除操作が完全削除になります。日数を短くする前や0にする前に、すでにゴミ箱にある投稿、固定ページ、コメントを確認します。

標準の保存日数は30日になる

WordPressは、EMPTY_TRASH_DAYSが定義されていなければ30を使います。標準定数の定義にある値です。

日数を変える場合は、現在のwp-config.phpを保存し、同じ定数がないか検索します。定義がなければ、WordPress本体を読み込む行より前へ追加します。

define( 'EMPTY_TRASH_DAYS', 14 );

この14は書き方を示す例で、すべてのサイトに適した日数ではありません。誤削除に気付くまでの時間、投稿を確認する担当者、バックアップから戻す手間を考えて決めます。短くして得られる容量より、必要な記事を戻せなくなる損失が大きいなら、先に削除対象を整理します。

日数はゴミ箱へ移した時刻から数える

投稿や固定ページをゴミ箱へ移すと、WordPressは元の状態と、ゴミ箱へ移した時刻をメタデータへ保存します。投稿をゴミ箱へ移す処理では、この時刻が_wp_trash_meta_timeに入ります。コメントにも同じ目的の時刻が保存されます。

自動削除の処理は、現在時刻からEMPTY_TRASH_DAYSの日数を引き、その時刻より前にゴミ箱へ入った項目を探します。したがって、日数は記事の公開日、更新日、コメント投稿日から数えるものではありません。ゴミ箱へ移した時刻が基準です。

値を30から14へ変えた場合、変更日から14日間を新しく与える動作にもなりません。すでに14日を超えてゴミ箱にある項目は、次の自動削除で対象になります。設定変更前に、古い項目から確認します。

投稿、固定ページ、コメントが自動削除の対象になる

wp_scheduled_delete()は、ゴミ箱へ入った時刻を持つ投稿側の項目とコメントを探します。状態がゴミ箱のままなら、投稿側はwp_delete_post()、コメントはwp_delete_comment()で完全削除します。

投稿を復元済みであるなど、現在の状態がゴミ箱でなければ、保存していたゴミ箱用のメタデータだけを削除します。時刻が古いという理由だけで、公開中の投稿を完全削除する処理ではありません。

添付ファイルにはMEDIA_TRASHという別の定数も関わります。標準ではMEDIA_TRASHがfalseなので、EMPTY_TRASH_DAYSだけを変えても、投稿、固定ページ、コメントと同じゴミ箱運用になるとは限りません。メディアの削除方針は分けて確認します。

0を指定すると新しい削除は完全削除になる

次のように0を設定すると、WordPressはゴミ箱を使いません。

define( 'EMPTY_TRASH_DAYS', 0 );

投稿や固定ページのwp_trash_post()と、コメントのwp_trash_comment()は、値が0なら完全削除の処理を呼び出します。管理画面の削除操作も、ゴミ箱へ移す操作ではなくなります。誤って削除してからゴミ箱で戻す猶予はありません。

すでにゴミ箱にある項目にも注意が必要です。自動削除の基準時刻は、現在時刻から0日を引いた時刻になります。そのため、以前からゴミ箱にある項目は、次に自動削除が動いたときの対象です。0へ変える前に必要な項目を復元し、残すデータのバックアップを確認します。

ゴミ箱を使わないことと、削除前の確認を増やすことは別です。権限を持つ利用者が誤って削除する可能性は残ります。容量を減らす目的だけで0を選ばず、誰が削除できるか、削除前に誰が承認するかも決めます。

完全削除は日次のWP-Cronが次に動いたときに行われる

WordPressの管理画面は、wp_scheduled_deleteという予定がなければ、日次イベントとして登録します。実行時には、同名の処理が期限を過ぎたゴミ箱項目を探します。

WP-Cronは、サーバーの時計だけで指定時刻に必ず始まる仕組みではありません。通常はサイトへのアクセスをきっかけに、期限を過ぎた予定を確認します。そのため、保存日数を過ぎても、WP-Cronが動くまではゴミ箱に残る場合があります。

反対に、WP-Cronが動いていないことを長期保存の方法にしてはいけません。呼び出しが復旧すれば、期限を過ぎた項目がまとめて削除されます。残す必要がある項目はゴミ箱から復元し、ゴミ箱とは別のバックアップへ保存します。

日数を変える前に既存項目と復旧方法を決める

最初に、投稿、固定ページ、コメントの各ゴミ箱を開き、残すものを復元します。次に、現在のEMPTY_TRASH_DAYS、MEDIA_TRASH、WP-Cronの動作を確認します。定数がなければ、標準値の30日です。

設定後は、管理画面の削除表示を確認し、試験用の項目を一件だけゴミ箱へ移します。正しい状態へ変わることを見たら、その項目を復元します。0を設定した環境では復元できないため、公開データを使った試験は行いません。

運用記録には、保存日数、変更理由、対象、変更日時、確認したゴミ箱、WP-Cronの確認方法、変更担当、復旧担当を残します。作業を委託しても、削除後に戻せる場所と、その保存期間はサイト側で把握します。

最初の一手は日数を短くすることではありません。現在のゴミ箱を古い順に確認し、復元する項目と完全削除してよい項目を分けてください。

戻る