削除するユーザーの数が多い場合は、wp user delete wp-cliコマンドを使用してスクリプトのタイムアウトを回避することを検討してください。
ここだ、すべてのユーザーを削除するには、SQLクエリの例任意のタイプとステータスのポストなし。
したがって、このテストされていないワンライナーを試すことができます。
wp user delete $(wp db query "SELECT ID FROM wp_users WHERE ID NOT IN (SELECT DISTINCT post_author FROM wp_posts ) AND ID NOT IN (1,2,3)" | tail -n +2 ) --reassign=1
または拡張形式:
wp user delete $(wp db query
"SELECT ID
FROM wp_users
WHERE ID NOT IN (
SELECT DISTINCT post_author FROM wp_posts
) AND ID NOT IN (1,2,3)" | tail -n +2
) --reassign=1
AND ID NOT IN (1,2,3)
これらのユーザー(管理者ユーザーなど)が削除されないように、追加の制限を追加したことに注意してください。あなたはそれをあなたのニーズとテーブルプレフィックスに合わせて調整する必要がありますwp_
。
数人のユーザーに対してこれを簡単にテストtail -n +2
したところ、ヘッダーの上部3行とwp db query
出力のテーブル境界を回避するために、パーツを追加する必要があることに気付きました。
ここでは、通知を回避するために、すべての投稿をユーザー1に再割り当てします。
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n]
を追加してユーザーの削除条件を緩和するなど、ニーズに合わせてさらに調整できることを願っていますWHERE post_status = 'publish'
。
注:テストを行う前に、必ずバックアップしてください。