web-dev-qa-db-fra.com

Erreur après la suppression du type de message personnalisé avec une fonction (aucune corbeille utilisée)

J'utilise une fonction que j'ai créée pour supprimer toutes les publications d'un utilisateur après la suppression d'une publication spécifique. Dans mon cas, j'utilise un type de message personnalisé appelé société. Et des types de messages personnalisés supplémentaires tels que des travaux ou des événements. Si le profil de la société est supprimé, toutes les autres publications de cet utilisateur sont également supprimées.

Mon problème maintenant: si je fais cela pour les messages normaux, les messages sont déplacés vers la corbeille. Tout va bien ici ...

Mais si je le fais pour les autres types de publications personnalisées, ils sont supprimés complètement sans corbeille. Je pourrais les jeter si je les supprimais dans la zone d'administration. Donc la corbeille est active !?

Des idées qui ne vont pas? Voici mon code:

function delete_all_posts_from_author($post_id) {


    global $post;
    $id = $post->ID;

    // Only trigger if post type is "company"
    if ( get_post_type($id) == "company" ) {

        $author_id = $post->post_author;

        $posts_from_author = get_posts(
            array(
                'posts_per_page'    => -1,
                'post_status'       => 'publish',
                'post_type'         => array('event','job'),
                'author'            => $author_id,
                'fields'            => 'ids', // Only get post ID's
            )
        );

        foreach ( $posts_from_author as $post_from_author ) {
            wp_delete_post( $post_from_author, false); // Set to False if you want to send them to Trash.
        }
    }


}

add_action( 'publish_to_trash',  'delete_all_posts_from_author', 10, 1 );
2
Cray

En regardant la source assez curieusement, l'argument $force_delete dans wp_delete_post() only s'applique aux publications, pages et pièces jointes natives.

Je pense rapidement que pour les CPT, vous devez utiliser la fonction explicite wp_trash_post() si vous souhaitez un comportement de la corbeille.

3
Rarst