# wp_delete_user()

URL: https://chugunov.pro/api-wordpress/functions/wp_delete_user/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.0.0.

## Сигнатура

```php
wp_delete_user( int $id, int $reassign = null ): bool
```

## Описание

Обратите внимание, что при установке Multisite пользователь лишь удаляется с сайта, но не удаляется из базы данных.
Если параметру $reassign не присвоен ID пользователя, то все записи этого пользователя будут удалены. Действие ‘delete_user’, которому передаётся ID удаляемого пользователя, выполняется после того, как записи будут переназначены или удалены.
Метаданные этого пользователя также будут удалены.

## Параметры

- `$id` `int` — обязательный. ID пользователя.
- `$reassign` `int` — необязательный, по умолчанию `null`. Переназначить записи и ссылки на новый ID пользователя.

## Возвращаемое значение

`bool`

## Исходный код

Файл: `wp-admin/includes/user.php:345`

```php
function wp_delete_user( $id, $reassign = null ) {
	global $wpdb;

	if ( ! is_numeric( $id ) ) {
		return false;
	}

	$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 site.
	 *
	 * Note that on a Multisite installation the user only gets removed from the site
	 * and does not get deleted from the database.
	 *
	 * @since 2.0.0
	 * @since 5.5.0 Added the `$user` parameter.
	 *
	 * @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.
	 * @param WP_User  $user     WP_User object of the user to delete.
	 */
	do_action( 'delete_user', $id, $reassign, $user );

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

		/**
		 * Filters the list of post types to delete with a user.
		 *
		 * @since 3.4.0
		 *
		 * @param string[] $post_types_to_delete Array of 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 site.
	 *
	 * Note that on a Multisite installation the user may not have been deleted from
	 * the database depending on whether `wp_delete_user()` or `wpmu_delete_user()`
	 * was called.
	 *
	 * @since 2.9.0
	 * @since 5.5.0 Added the `$user` parameter.
	 *
	 * @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.
	 * @param WP_User  $user     WP_User object of the deleted user.
	 */
	do_action( 'deleted_user', $id, $reassign, $user );

	return true;
}
```

## История изменений

- 2.0.0 — Introduced.

## Связанные

Использует: [`wp_delete_link`](https://chugunov.pro/api-wordpress/functions/wp_delete_link/), `WP_User::__construct`, [`clean_user_cache`](https://chugunov.pro/api-wordpress/functions/clean_user_cache/), [`clean_post_cache`](https://chugunov.pro/api-wordpress/functions/clean_post_cache/), [`wp_delete_post`](https://chugunov.pro/api-wordpress/functions/wp_delete_post/), [`post_type_supports`](https://chugunov.pro/api-wordpress/functions/post_type_supports/), [`clean_bookmark_cache`](https://chugunov.pro/api-wordpress/functions/clean_bookmark_cache/), [`remove_user_from_blog`](https://chugunov.pro/api-wordpress/functions/remove_user_from_blog/), `wpdb::get_col`, `wpdb::update`, `wpdb::delete`, [`delete_metadata_by_mid`](https://chugunov.pro/api-wordpress/functions/delete_metadata_by_mid/), [`is_multisite`](https://chugunov.pro/api-wordpress/functions/is_multisite/), [`get_current_blog_id`](https://chugunov.pro/api-wordpress/functions/get_current_blog_id/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`get_post_types`](https://chugunov.pro/api-wordpress/functions/get_post_types/), `wpdb::prepare`.
Используется в: `WP_REST_Users_Controller::delete_item`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_delete_user/
