使用函数删除自定义帖子类型后出错(未使用垃圾桶)

时间:2017-10-04 作者:Cray

我正在使用一个我构建的函数,在删除特定帖子后,删除用户的所有帖子。在我的例子中,我使用一个名为company的自定义Post类型。以及其他自定义帖子类型,如作业或事件。如果公司档案被删除,则该用户的所有其他帖子也将被删除。

我现在的问题是:如果我对普通帖子这样做,帖子就会被移到垃圾箱。这里一切正常。。。

但是,如果我对其他自定义帖子类型执行此操作,它们将被完全删除,没有垃圾。如果我在管理区域删除它们,我可能会将其丢弃。垃圾箱是活动的!?

有什么想法吗?出了什么问题?这是我的代码:

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 );

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

非常好奇地看着来源$force_delete 中的参数wp_delete_post() 仅适用于本机帖子、页面和附件。

我的快速猜测是,对于CPT,您需要使用显式wp_trash_post() 如果需要垃圾行为,请使用函数。

结束