web-dev-qa-db-fra.com

wp_delete_post () supprime post au lieu de le déplacer dans la corbeille

J'ai mis en place un type de publication personnalisé, que l'utilisateur peut modifier à partir de l'interface. J'utilise wp_delete_post() pour permettre aux utilisateurs de supprimer un message qu'ils ont créé. Cela fonctionne, mais les messages sont supprimés au lieu d'être déplacés vers la corbeille.

J'ai essayé de déplacer un message vers le bac via le backend et cela fonctionne comme vous le souhaiteriez, le poste est déplacé vers le bac. Je ne suis donc pas sûr de savoir pourquoi le wp_delete_post ne fonctionne pas de la même manière, mais supprime définitivement le message.

Selon le codex WordPress, le deuxième paramètre de la fonction wp_delete_post() est un booléen qui, s'il est défini sur false, doit déplacer la publication dans la corbeille, pas la supprimer définitivement. Le second paramètre est défini sur false par défaut, c'est donc mon code:

wp_delete_post( $race->ID );

Je suis conscient que je peux utiliser la fonction wp_trash_post() à la place (ce qui est en fait ce que j'utilise maintenant, car le wp_delete_post ne fait pas ce que je veux qu'il fasse), mais j'aimerais savoir pourquoi la fonction wp_delete_post() ne fonctionne pas correctement.

2
Ilona

Suivre la ligne de code

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 fonctionne simplement avec 'post' et 'page', il ne fonctionne pas avec le type de post personnalisé

2