ブロックされたすべてのユーザーを Drush で削除するにはどうすればよいですか? スパマーから何百人ものユーザーをブロックしています。これらのユーザーをすべて削除したい。Web インターフェースから実行してみましたが、これは一度に約 20 ユーザーでしか機能しません。削除するページが 60 ページありますが、時間がかかりすぎて維持できません。また、ブロックされたユーザーが削除されたときに関連するすべてのコールバックを実行し、そのすべてのコンテンツを削除したいと考えています。に気づきuser-cancel
ましたが、これは単一のユーザーにのみ適用されるようです。ブロックされたすべてのユーザーに対してこのコマンドを機能させる方法はありますか?
3 に答える
Drupal 7 と Drush 5.9 を使用して、私が行った方法は次のとおりです。
1-ここに示すように、ローカルの Drupal インストールにエイリアス「@example-local」を作成します。
2-「delete-blocked-users.script」という名前のスクリプトファイルを、たとえば「/Users/username/scripts/drush」に次のコードで作成します。
#!/usr/bin/env drush
$users = db_query("SELECT * FROM {users} WHERE (status = 0)");
foreach ($users as $user) {
exec("drush @example-local user-cancel $user->name -y");
}
3-スクリプトファイルを実行可能にします:
chmod +x ~/scripts/drush/delete-blocked-users.script
4- 最後に、次を使用してスクリプトを実行します。
drush @example-local scr ~/scripts/drush/delete-blocked-users.script
これにより、ブロックされたすべてのユーザー (ステータス = 0 のユーザー) が、確認を求めることなく削除されます (-y フラグで定義)。
Drush には、ブロックされたすべてのアカウントを削除するための簡単なコマンドはありません。管理インターフェイスでvboビューを設定して、ブロックされたユーザーをフィルター処理し、すべてを選択してキャンセルする方がおそらく簡単でしょう。
で php スクリプトを実行することもできますdrush php-script script.php
。
したがって、ブロックされたユーザーのクエリを実行し、ユーザーをループスルーしてユーザーキャンセル関数を呼び出す php スクリプトを設定できます。