Si tiene que eliminar una gran cantidad de usuarios, puede utilizar el comando wp user delete wp-cli para evitar tiempos de espera de script.
Aquí hay un ejemplo de una consulta SQL para eliminar a todos los usuarios sin publicaciones de ningún tipo y estado .
Por lo tanto, puede probar este one-liner no probado :
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
o en forma expandida:
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
Tenga en cuenta que agregamos una AND ID NOT IN (1,2,3)
restricción adicional para asegurarnos de que estos usuarios no se eliminen (por ejemplo, usuarios administradores). Deberá ajustarlo a sus necesidades y también al prefijo de la tabla wp_
.
Cuando probé brevemente esto para un par de usuarios, noté que tenía que agregar la tail -n +2
parte para evitar las 3 líneas superiores en el encabezado y el borde de la tabla de la wp db query
salida.
Aquí reasignamos todas las publicaciones al usuario 1, para evitar el aviso:
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n]
Espero que pueda ajustarlo aún más a sus necesidades, como relajar las condiciones de eliminación del usuario agregando WHERE post_status = 'publish'
.
Nota: ¡ Recuerde hacer una copia de seguridad antes de probar!