wp_delete_user() │ WP 2.0.0 Видаляє користувача. За бажанням, перекидає пости та посилання на іншого користувача.
Метадані користувача також видаляються.
На фронті вимагає підключення файлу:
require_once ABSPATH. 'wp-admin/includes/user.php';
Фільтр delete_user , який надає ID користувача, спрацьовує відразу після видалення та перепризначення постів.
Повертає true|false
. true – вдалося видалити. false – не вдалося видалити.
Використання wp_delete_user($id, $reassign);
$id
(число) (обов’язковий)
ID користувача, якого потрібно видалити.
$reassign
(число)
ID користувача на якого потрібно перекинути всі пости та посилання, що видаляється.
Якщо не вказати цей параметр, всі пости видаленого користувача будуть також видалені. Приклади #1 Видалимо користувача 2 і перекинемо всі його пости користувачеві 4 Виведемо повідомлення про видалення:
$ id = 2;
$ new_id = 4;
$del = wp_delete_user($id, $new_id);
if($del)
echo "користувач $id був видалений! А автором всіх його постів став користувач - $new_id.";
else
echo "не вдалося видалити користувача. Може його вже чи зовсім немає?"; Додати свій приклад
нотатки Global. wpdb. $wpdb WordPress database abstraction object. список змін Код wp_delete_user() wp delete user WP 6.0.2 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 inmediate before a user is deleted from the database.
*
* @ Since 2.0.0
* @since 5.5.0 Added `$user` parameter.
*
* @param int $id ID для користувача до delete.
* @param int|null $reassign ID користувача, щоб 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 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 database.
*
* @ Since 2.9.0
* @since 5.5.0 Added `$user` parameter.
*
* @param int $id ID з вибраним користувачем.
* @param int|null $reassign ID користувача, щоб reassign posts and links to.
* Default null, for no reassignment.
* @param WP_User $user WP_User object of deleted user.
*/
do_action( 'deleted_user', $id, $reassign, $user);
return true;
} Зв’язані функції