wp_delete_post() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました