web-dev-qa-db-fra.com

Comment supprimer toutes les publications et les pièces jointes d'un utilisateur lorsque je le supprime?

Lorsque je supprime un utilisateur, WordPress peut simplement supprimer le message ou la page de cet utilisateur, pas son message personnalisé ni ses pièces jointes.

Une idée pour un crochet spécial?

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

Le hook que vous choisissez est approprié, et voici comment l'utiliser pour supprimer toutes les publications de tous types (publications, pages, liens, pièces jointes, etc.) de l'utilisateur supprimé:

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

Si vous souhaitez uniquement supprimer les pièces jointes des utilisateurs, remplacez les arguments post_type de any par attachment et utilisez wp_delete_attachment($attachment_id) au lieu de wp_delete_post().

1
Ahmad M