web-dev-qa-db-de.com

wp_delete_post () löscht Beiträge, anstatt sie in den Papierkorb zu verschieben

Ich habe einen benutzerdefinierten Beitragstyp eingerichtet, den Benutzer über das Frontend bearbeiten können. Ich verwende wp_delete_post(), damit Benutzer einen von ihnen erstellten Beitrag löschen können. Es funktioniert, aber die Beiträge werden gelöscht, anstatt in den Papierkorb verschoben zu werden.

Ich habe versucht, einen Beitrag über das Backend in den Papierkorb zu verschieben, und es funktioniert wie erwartet. Der Beitrag wird in den Papierkorb verschoben. Ich bin mir also nicht sicher, warum der wp_delete_post nicht auf die gleiche Weise funktioniert, sondern den Beitrag dauerhaft entfernt.

Gemäß dem WordPress-Codex ist der zweite Parameter der Funktion wp_delete_post() ein Boolescher Wert, der den Beitrag in den Papierkorb verschieben und nicht endgültig löschen soll, wenn er auf false gesetzt ist. Der zweite Parameter ist standardmäßig auf false gesetzt. Dies ist also mein Code:

wp_delete_post( $race->ID );

Mir ist bewusst, dass ich stattdessen die Funktion wp_trash_post() verwenden kann (was ich gerade verwende, da der wp_delete_post nicht das tut, was ich möchte), aber ich möchte herausfinden, warum die Funktion wp_delete_post() funktioniert funktioniert nicht richtig.

2
Ilona

Der Codezeile folgen

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 funktioniert nur mit 'post' und 'page', nicht mit benutzerdefinierten Beitragstypen