Функция wp_delete_user()
позволяет удалять пользователей WordPress, с возможностью переназначения их постов и ссылок другому пользователю.
wp_delete_user( int $id, int $reassign = null ): bool
Параметры
$id
(число, обязательный): ID пользователя, которого необходимо удалить.$reassign
(число, необязательный): ID пользователя, которому нужно переназначить все посты и ссылки удаляемого пользователя. Если этот параметр не указан, все посты будут удалены вместе с пользователем.
Возвращаемое значение
true
, если пользователь успешно удален.false
, если возникла ошибка при удалении пользователя.
Описание
- Функция
wp_delete_user()
удаляет пользователя и все его данные, включая метаданные, связанные с этим пользователем. - Если передан параметр
$reassign
, посты удаляемого пользователя будут переназначены указанному пользователю. В противном случае все посты удаляемого пользователя также будут удалены. - В мультисайтовых установках WordPress пользователь удаляется только с конкретного сайта, но остается в базе данных.
- Если вы используете эту функцию в плагине, необходимо подключить файл
./wp-admin/includes/user.php
, чтобы избежать ошибки «Call to undefined function».
Пример 1: Удаление пользователя с переназначением постов
Этот код удаляет пользователя с ID 5 и переназначает все его посты пользователю с ID 6
:
$id = 5;
$new_id = 6;
$deleted = wp_delete_user( $id, $new_id );
if ( $deleted ) {
echo "Пользователь с ID $id был удален, а все его посты теперь принадлежат пользователю с ID $new_id.";
} else {
echo "Не удалось удалить пользователя. Возможно, его уже нет.";
}
Пример 2: Удаление пользователя без переназначения постов
Этот пример удаляет пользователя и все его посты без их переназначения:
$id = 3;
$deleted = wp_delete_user( $id );
if ( $deleted ) {
echo "Пользователь с ID $id был удален вместе со всеми его постами.";
} else {
echo "Не удалось удалить пользователя.";
}
Пример 3: Удаление текущего авторизованного пользователя
Код для удаления текущего пользователя, если он подтвердил свое действие через ссылку на удаление аккаунта:
if ( is_user_logged_in() && ! empty( $_GET['DeleteMyAccount'] ) ) {
add_action( 'init', 'delete_current_user' );
}
function delete_current_user() {
if ( ! wp_verify_nonce( 'delete_account' ) ) {
return;
}
require_once( ABSPATH . 'wp-admin/includes/user.php' );
$current_user = wp_get_current_user();
wp_delete_user( $current_user->ID );
}
Хуки
delete_user
: Срабатывает до удаления пользователя.deleted_user
: Срабатывает после удаления пользователя.post_types_to_delete_with_user
: Позволяет указать, какие типы записей должны удаляться вместе с пользователем.
Заключение
Функция wp_delete_user()
обеспечивает безопасное удаление пользователей в WordPress. Если нужно сохранить их контент, можно переназначить посты другому пользователю через параметр $reassign
.