説明
wp_delete_post() は、投稿を削除する関数です。ゴミ箱を経由するか、完全に削除するかを選べます。
基本構文
wp_delete_post( int $postid = 0, bool $force_delete = false ): WP_Post|false|null
引数
$postid:削除する投稿ID$force_delete:trueで完全削除、falseでゴミ箱へ
戻り値
削除した投稿オブジェクト。失敗時は false または null。
使い方(サンプル)
wp_delete_post( 123, true );
注意点
trueを指定すると復元できません。実行前にバックアップを取るなど慎重に扱います。- 添付ファイルは
wp_delete_attachment()を使います。 - ゴミ箱を無効にしていると、
falseでも完全削除されます。
実務での使いどころ
- 投稿を、プログラムから削除するとき。
- ゴミ箱を経由せずに、完全に削除するとき(
$force_deleteをtrueにする)。 - 古い投稿を、定期的に掃除するとき。
よくあるミスと対処
$force_deleteの挙動を取り違えている。ゴミ箱を経由するのは、$force_deleteがfalseのときの、通常の投稿と固定ページだけ。カスタム投稿タイプや添付ファイルは、省略しても完全に削除される。ゴミ箱に送りたいときはwp_trash_post()を使う。trueを指定して、復元できない削除を実行してしまう。事前にバックアップを取る。- 削除の権限(
delete_post)を確認していない。
NG例
wp_delete_post( $post_id, true ); // 確認なしで、復元できない削除
OK例
if ( current_user_can( 'delete_post', $post_id ) ) {
wp_delete_post( $post_id ); // 通常の投稿・固定ページはゴミ箱へ移動(カスタム投稿タイプは完全削除)
}
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| ゴミ箱へ移動 | wp_trash_post() |
| 完全に削除 | wp_delete_post( $id, true )($force_delete を省略した wp_delete_post( $id ) は、通常の投稿と固定ページだけがゴミ箱へ移動する) |
| ゴミ箱から戻す | wp_untrash_post() |
関連項目
wp_trash_post()、wp_insert_post()、wp_delete_attachment()
公式リファレンス:wp_delete_post() | Function | WordPress Developer Resources

コメント