WordPressでは、投稿を作成したまま放置している「自動下書き(auto-draft)」が管理画面に溜まっていくことがあります。これらは定期的に削除することで、データベースの不要な肥大化を防ぎ、運用を快適に保つことができます。
この記事では、管理画面から一括削除する方法と、定期的に自動削除する処理をfunctions.phpに実装する方法の両方を紹介します。
自動下書きとは
WordPressでは、新規投稿画面を開いただけで「auto-draft」ステータスの投稿が自動的に生成されます。これらは未使用であれば削除しても問題ありません。
一括削除処理をfunctions.phpに追加する方法
以下のコードをテーマの functions.php
に追加することで、管理者が任意のタイミングで自動下書きを一括削除できます。
function delete_all_auto_drafts() {
global $wpdb;
$auto_drafts = $wpdb->get_col(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'auto-draft'"
);
foreach ($auto_drafts as $post_id) {
wp_delete_post($post_id, true);
}
}
この関数を呼び出せば一括削除が行われます。例えば管理画面にボタンを設置して呼び出すことも可能です。
定期的に自動削除する処理の実装(Cron対応)
WordPressの疑似Cron(WP-Cron)を使えば、定期的に「auto-draft」を自動で削除できます。以下のコードを functions.php
に追加してください。
// イベントの登録
function schedule_auto_draft_cleanup() {
if (!wp_next_scheduled('auto_draft_cleanup_event')) {
wp_schedule_event(time(), 'daily', 'auto_draft_cleanup_event');
}
}
add_action('wp', 'schedule_auto_draft_cleanup');
// イベントのフック処理
function run_auto_draft_cleanup() {
global $wpdb;
$auto_drafts = $wpdb->get_col(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'auto-draft'"
);
foreach ($auto_drafts as $post_id) {
wp_delete_post($post_id, true);
}
}
add_action('auto_draft_cleanup_event', 'run_auto_draft_cleanup');
この処理により、1日に1回、自動で不要な自動下書きが削除されます。
登録されたCronイベントの確認方法
実行予定のWP-Cronイベントを確認するには、「WP Crontrol」などのプラグインを使用すると便利です。管理画面から現在のスケジュールと実行履歴を一覧表示できます。
注意点
- この処理は「auto-draft」投稿のみを対象にしています。他の下書き(
draft
)は削除されません。 - データを完全に削除するため、削除後に復元はできません。念のためバックアップを取ってから実行してください。
- 運用中のサイトでは、頻度やタイミングを考慮して実装してください。
まとめ
WordPressで自動生成される「auto-draft」投稿は、定期的にクリーンアップすることで管理画面やデータベースの整理につながります。一括削除と自動削除を組み合わせて導入すれば、手間なく運用効率を上げることができます。
運用状況に応じて、削除頻度や処理対象をカスタマイズしてみてください。