Saya memiliki 10 ribu pengguna, sekitar 98% dari pengguna ini tidak pernah menerbitkan posting (maksud saya posting bukan komentar).
Saya perlu cara untuk menghapus pengguna secara massal dengan 0 posting.
Metode ini harus menghitung semua posting termasuk jenis posting khusus dan harus menggunakan fungsi WordPress yang tepat untuk menghapus pengguna seolah-olah mereka dihapus secara manual di dasbor dan tidak hanya menjatuhkan tabel / baris di mysql, karena itu dapat menyebabkan hasil yang tidak terduga.
Ada plugin lama yang melakukan ini tetapi tidak mempertimbangkan semua jenis posting sehingga tidak bisa digunakan.
Setiap bantuan dihargai.
Jawaban:
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 diujiini :atau dalam bentuk yang diperluas:
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 tabelwp_
.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 tabelwp db query
output.Di sini kami menetapkan kembali semua posting ke pengguna 1, untuk menghindari pemberitahuan:
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!
sumber
Y
atau gunakan--yes
untuk semua. Jika Anda memodifikasi sql hanya untuk menghapus pengguna yang mempublikasikan posting, maka Anda mungkin perlu untuk menghindari menghapus misalnya konsep. Perhatikan bahwa Anda menyebutkan dalam pertanyaan, pengguna yang tidak pernah menerbitkan pos .. Itu benar-benar berarti mereka mungkin memiliki konsep. Saya berasumsi Anda tidak memikirkan hal itu ;-) Harap sangat spesifik dalam pertanyaan apa yang ingin Anda hapus untuk menghindari dugaan. @MichaelRogersInilah cara untuk melakukannya dalam PHP. Mungkin lambat dan / atau kehabisan waktu, tetapi karena ini hanya satu kali, itu tidak terlalu menjadi masalah. Tempatkan sementara di dalam functions.php Anda atau unggah sebagai plugin baru.
sumber
Dilihat oleh kode sumber plugin lama yang Anda sebutkan, jenis posting yang tidak dipertimbangkan adalah lampiran dan revisi . Saya pikir Anda dapat dengan mudah memperbaiki ini dengan menghapus ini dari kode sumber file plugin no-posts-user-delete.php
sumber