Ошибка после удаления пользовательского типа записи с помощью функции (корзина не используется)


Я использую функцию, которую я создал, чтобы удалять все сообщения пользователя после удаления определенного сообщения. В моем случае я использую пользовательский тип записи под названием "компания". И дополнительные пользовательские типы записей, такие как задания или события. Если профиль компании будет удален, все остальные сообщения этого пользователя также будут удалены.

Моя проблема сейчас: если я сделаю это для обычных сообщений, сообщения будут перемещены в корзину. Здесь все в порядке...

Но если я сделаю это для другого пользовательского сообщения Типы, они удаляются без мусора. Я мог бы выбросить их, если удалю в админке. Значит, корзина активна!?

Есть идеи, что происходит не так? Вот мой код:

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 );
Author: Cray, 2017-10-04

1 answers

От довольно любопытного взгляда на источник $force_delete аргумент в wp_delete_post() только применяется к собственным записям, страницам и вложениям.

Мое быстрое предположение состоит в том, что для CPTS вам нужно будет использовать явную функцию wp_trash_post(), если вам нужно поведение мусора.

 3
Author: Rarst, 2017-10-04 16:58:58