it-swarm.com.ru

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

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

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

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

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

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

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

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

3
Rarst