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 +2
bagian untuk menghindari 3 baris teratas di header dan perbatasan tabel wp db query
output.
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!