wp_delete_user [ WordPress Function ]
| Parameters: |
|
| Returns: |
|
| Defined at: |
|
Remove user and optionally reassign posts and links to another user.
If the $reassign parameter is not assigned to an User ID, then all posts will be deleted of that user. The action 'delete_user' that is passed the User ID being deleted will be run after the posts are either reassigned or deleted. The user meta will also be deleted that are for that User ID.
Source
<?php
function wp_delete_user( $id, $reassign = 'novalue' ) {
global $wpdb;
$id = (int) $id;
$user = new WP_User( $id );
// allow for transaction statement
do_action('delete_user', $id);
if ( 'novalue' === $reassign || null === $reassign ) {
$post_types_to_delete = array();
foreach ( get_post_types( array(), 'objects' ) as $post_type ) {
if ( $post_type->delete_with_user ) {
$post_types_to_delete[] = $post_type->name;
} elseif ( null === $post_type->delete_with_user && post_type_supports( $post_type->name, 'author' ) ) {
$post_types_to_delete[] = $post_type->name;
}
}
$post_types_to_delete = apply_filters( 'post_types_to_delete_with_user', $post_types_to_delete, $id );
$post_types_to_delete = implode( "', '", $post_types_to_delete );
$post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d AND post_type IN ('$post_types_to_delete')", $id ) );
if ( $post_ids ) {
foreach ( $post_ids as $post_id )
wp_delete_post( $post_id );
}
// Clean links
$link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) );
if ( $link_ids ) {
foreach ( $link_ids as $link_id )
wp_delete_link($link_id);
}
} else {
$reassign = (int) $reassign;
$wpdb->update( $wpdb->posts, array('post_author' => $reassign), array('post_author' => $id) );
$wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) );
}
// FINALLY, delete user
if ( is_multisite() ) {
remove_user_from_blog( $id, get_current_blog_id() );
} else {
$meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) );
foreach ( $meta as $mid )
delete_metadata_by_mid( 'user', $mid );
$wpdb->delete( $wpdb->users, array( 'ID' => $id ) );
}
clean_user_cache( $user );
// allow for commit transaction
do_action('deleted_user', $id);
return true;
}
?>
Examples [ wp-snippets.com ]
Top Google Search Results
- Function Reference/wp delete user « WordPress Codex
Description. Remove user and optionally reassign posts and links to another user . If the $reassign parameter is not assigned to a User ID, then all posts will be ...
codex.wordpress.org - WordPress › Support » wp_delete_user bug in multisite?
I looked at the code in user.php function wp_delete_user( $id, $reassign ), and it looks to me like the line of code to delete the user is completely missing, if you ...
wordpress.org - WordPress › Support » Tags — wp_delete_user
WordPress › Support » wp_delete_user ... [resolved] wp_delete_user bug in multisite? ... wp_delete_user hook, reassign missing, 1, Eran Miller, 9 months ...
wordpress.org - Images uploaded with cimy get removed on wp_delete_user()
Oct 1, 2011 ... I notice a strange behaviour when I try to delete a user in Wordpress. I use the Cimy_User_Extra_Fields plugin that allows me to upload an ...
stackoverflow.com
User discussions [ wordpress.org ]
- gomez.rudy on "wp_delete_user bug in multisite?"
- Eddie Krebs on "wp_delete_user bug in multisite?"
- gomez.rudy on "wp_delete_user bug in multisite?"
- Eddie Krebs on "wp_delete_user bug in multisite?"
- Tim Moore on "wp_delete_user bug in multisite?"
- Eddie Krebs on "wp_delete_user bug in multisite?"
- ShinichiN on "wp_delete_user bug in multisite?"
- Ipstenu on "wp_delete_user bug in multisite?"
- Eddie Krebs on "wp_delete_user bug in multisite?"
- Ipstenu on "wp_delete_user bug in multisite?"