web-dev-qa-db-de.com

Wie lösche ich alle Posts und Anhänge eines Benutzers, wenn ich sie lösche?

Wenn ich einen Benutzer lösche, kann WordPress nur den Beitrag oder die Seite dieses Benutzers löschen, nicht seinen benutzerdefinierten Beitrag und seine Anhänge.

Eine Idee für einen besonderen Haken?

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
Mic

Der von Ihnen gewählte Hook ist angemessen. So löschen Sie damit alle Posts aller Art (Posts, Seiten, Links, Anhänge usw.) des gelöschten Benutzers:

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

Wenn Sie nur Benutzeranhänge löschen möchten, ändern Sie die Argumente für post_type von any in attachment und verwenden Sie wp_delete_attachment($attachment_id) anstelle von wp_delete_post().

1
Ahmad M