Jika Anda memiliki banyak pengguna untuk dihapus, Anda mungkin setuju menggunakan perintah wp delete wp-cli untuk menghindari timeout skrip.
Berikut adalah contoh dari kueri SQL untuk menghapus semua pengguna tanpa tulisan dari jenis dan status apa pun .
Karena itu Anda dapat mencoba satu-liner yang belum diuji ini :
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
atau dalam bentuk yang diperluas:
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
Perhatikan bahwa kami menambahkan AND ID NOT IN (1,2,3)batasan ekstra untuk memastikan pengguna ini tidak dihapus (mis. Pengguna admin). Anda harus menyesuaikannya dengan kebutuhan Anda dan juga awalan tabel wp_.
Ketika saya secara singkat menguji ini untuk beberapa pengguna, saya perhatikan saya harus menambahkan tail -n +2bagian untuk menghindari 3 baris teratas di header dan perbatasan tabel wp db queryoutput.
Di sini kami menetapkan kembali semua posting ke pengguna 1, untuk menghindari pemberitahuan:
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n]
Semoga Anda dapat menyesuaikan lebih lanjut dengan kebutuhan Anda, seperti menenangkan pengguna menghapus ketentuan dengan menambahkan WHERE post_status = 'publish'.
Catatan: Ingatlah untuk membuat cadangan sebelum pengujian!