如何在删除时删除用户的所有帖子和附件?

时间:2012-12-12 作者:Mic

当我删除一个用户时,WordPress只能删除该用户的帖子或页面,而不能删除他的自定义帖子和附件。

一个特殊挂钩的主意?

add_action( \'delete_user\', \'my_delete_user\');

function my_delete_user($user_id) {
    $user = get_user_by(\'id\', $user_id);
    $the_query = new WP_Query( $args );
        if ( have_posts() ) { 
            while ( have_posts() ) { 
                the_post(); 
                    wp_delete_post( $post->ID, false ); 

                    // HOW TO DELETE ATTACHMENTS ?
            }
        }
}

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

您选择的挂钩是合适的,下面是如何使用它删除已删除用户的所有类型(帖子、页面、链接、附件等)的所有帖子:

add_action(\'delete_user\', \'my_delete_user\');
function my_delete_user($user_id) {
    $args = array (
        \'numberposts\' => -1,
        \'post_type\' => \'any\',
        \'author\' => $user_id
    );
    // get all posts by this user: posts, pages, attachments, etc..
    $user_posts = get_posts($args);

    if (empty($user_posts)) return;

    // delete all the user posts
    foreach ($user_posts as $user_post) {
        wp_delete_post($user_post->ID, true);
    }
}
如果只想删除用户附件,请更改post_type 参数来自anyattachment 和使用wp_delete_attachment($attachment_id) 而不是wp_delete_post().

结束

相关推荐

Ajax for non-logged-in users

我正在开发一个插件,它可以从未登录用户(如Like按钮)捕获一些数据,并根据post\\u id将其输入数据库。我的插件对登录用户很好,但非登录用户在AJAX中会产生“-1”响应。我猜这与写入数据库的身份验证障碍有关,但我正在寻找一种解决方法。有什么想法吗?编辑:以下是代码:http://pastebin.com/ghtvJNiW我是根据Love-It AJAX plugin 皮平。他在教程中说,这只适用于登录用户,但我需要让它也适用于未登录用户。