web-dev-qa-db-ja.com

wp_delete_userとユーザー名

コンテンツを他のユーザーに再割り当てする場合、wp_delete_user()関数にはユーザーIDと[オプション]再割り当てIDが必要です。

WPは重複するユーザー名を許可しないため、すべてのユーザーのユーザー名も一意です。ユーザ名を知っていれば、1回だけクエリを実行してそのユーザのIDを見つけてからwordpressにそのユーザを削除するのではなく、1回のPHP/mysqliクエリで削除することはできませんか。

2
Rajesh Kakkad

1つのクエリだけでこれを行う方法はありません。しかし正直に言うと、ユーザーの削除には複数のクエリ自体が必要です...

この方法を破ることができるものがたくさんあるので、カスタムSQLを使用しないでください...存在する場合は常にWP関数を使用します(削除されたすべてのユーザーをログに記録する場合、またはアクションが必要など)

get_user_by を使用して、これを実現できます。以下に例を示します。

$user = get_user_by( 'login', 'john' );
if ( $user ) { // get_user_by can return false, if no such user exists
    wp_delete_user( $user->ID );
}

ユーザーを取得できるフィールドは次のとおりです:ID | slug | email | login

1

WordPressデータベースで複数のクエリを実行することでユーザーメタも削除されるため、WordPress関数wp_delete_user()を使用することをお勧めします。

WordPressのコーデックスで詳細を確認してください: https://developer.wordpress.org/reference/functions/wp_delete_user/

また、ユーザーIDを取得してから次のように追加してユーザーを削除するのも簡単です。

    $user = get_userdatabylogin('loginname');
    if($user){
        //delete user if exists
        wp_delete_user($user->ID);
    }

あるいは、WordPressデータベースからユーザーを正しく削除するために、非常に複雑なクエリを生成するために複数のクエリを実行する必要があります。

0
Vatsh Patel