wp_delete_user()
wp_delete_user( int $id, int $reassign = null ) 删除用户并有选…
wp_delete_user( int $id, int $reassign = null )
删除用户并有选择地将帖子和链接重新分配给另一个用户。
Remove user and optionally reassign posts and links to another user.
目录锚点:#说明#参数#源码#笔记
说明(Description)
如果$reassign参数没有分配给用户ID,那么该用户的所有帖子都将被删除。在重新分配或删除帖子后,将运行传递给正在删除的用户ID的“delete_user”操作。对于该用户ID的用户meta也将被删除。
参数(Parameters)
参数 | 类型 | 说明 |
---|---|---|
$id | (int) | 用户ID。 |
$reassign | (int) | 将帖子和链接重新分配到新的用户ID。 |
源码(Source)
/** * 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 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. * * @since 2.0.0 * * @global wpdb $wpdb * * @param int $id User ID. * @param int $reassign Optional. Reassign posts and links to new User ID. * @return bool True when finished. */ function wp_delete_user( $id, $reassign = null ) { global $wpdb; $id = (int) $id; $user = new WP_User( $id ); if ( !$user->exists() ) return false; // Normalize $reassign to null or a user ID. 'novalue' was an older default. if ( 'novalue' === $reassign ) { $reassign = null; } elseif ( null !== $reassign ) { $reassign = (int) $reassign; } /** * Fires immediately before a user is deleted from the database. * * @since 2.0.0 * * @param int $id ID of the user to delete. * @param int|null $reassign ID of the user to reassign posts and links to. * Default null, for no reassignment. */ do_action( 'delete_user', $id, $reassign ); if ( 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; } } /** * Filter the list of post types to delete with a user. * * @since 3.4.0 * * @param array $post_types_to_delete Post types to delete. * @param int $id User ID. */ $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 { $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id ) ); $wpdb->update( $wpdb->posts, array('post_author' => $reassign), array('post_author' => $id) ); if ( ! empty( $post_ids ) ) { foreach ( $post_ids as $post_id ) clean_post_cache( $post_id ); } $link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) ); $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) ); if ( ! empty( $link_ids ) ) { foreach ( $link_ids as $link_id ) clean_bookmark_cache( $link_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 ); /** * Fires immediately after a user is deleted from the database. * * @since 2.9.0 * * @param int $id ID of the deleted user. * @param int|null $reassign ID of the user to reassign posts and links to. * Default null, for no reassignment. */ do_action( 'deleted_user', $id, $reassign ); return true; }
更新版本 | 源码位置 | 使用 | 被使用 |
---|---|---|---|
2.0.0 | wp-admin/includes/user.php | 20 | 6 |
笔记(Notes)
允许用户终止其用户帐户。
类别:WordPress 函数手册、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!