web-dev-qa-db-ja.com

wp_delete_post()は、ゴミ箱に移動するのではなく、投稿を削除します

ユーザーがフロントエンドから編集できるカスタム投稿タイプを設定しました。自分が作成した投稿をユーザーが削除できるようにするためにwp_delete_post()を使用しています。それは動作しますが、投稿はゴミ箱に移動されるのではなく削除されます。

バックエンドを介して投稿をビンに移動しようとしましたが、予想どおりに動作します。投稿はビンに移動されます。だからwp_delete_postが同じように動かないのはよくわかりませんが、代わりに投稿を永久に削除します。

WordPress Codexによると、wp_delete_post()関数の2番目のパラメータはブール値で、falseに設定された場合、投稿を完全に削除するのではなく、ゴミ箱に移動します。 2番目のパラメータはデフォルトではfalseに設定されているので、これが私のコードです。

wp_delete_post( $race->ID );

私は代わりにwp_trash_post()関数を使うことができることを知っています(wp_delete_postからやりたいことはしないので、実際には今使っているものです)が、なぜwp_delete_post()関数が必要なのか調べたいと思います。正しく動作しません。

2
Ilona

コード行をたどる

https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/post.php#L2467

if ( ! $force_delete && ( 'post' === $post->post_type || 'page' === $post->post_type ) && 'trash' !== get_post_status( $postid ) && EMPTY_TRASH_DAYS ) {
    return wp_trash_post( $postid );
}

$ force_deleteは 'post'と 'page'でのみ機能します。カスタムの投稿タイプでは機能しません。