Eliminar usuarios con más de X días en WordPress

Eliminar usuarios en WordPress es tan fácil como crearlos. En cambio, su gestión en el caso de que se trate de un número elevado de usuarios puede ser más compleja. En este post veremos una de las situaciones que podemos encontrarnos a la hora de gestionar los usuarios de una web con WordPress y como solucionarla.

A continuación, nos encargaremos de eliminar usuarios de WordPress que tengan más de una cantidad determinada de días utilizando, todo ello, sólo con código y sin utilizar plugins.

 

Eliminando usuario antiguos

 

 Lo primero que haremos será dirigirnos al archivo functions.php de nuestro theme que estemos usando. Podemos hacerlo desde Apariencia > Editor > functions.php

Recordar que una buena practica antes de realizar este tipo de cambios importantes en nuestra web, es hacer o tener a mano una copia de seguridad disponible tanto de los archivos de nuestra web como de la base de datos para que en caso de una mala configuración poder volver a un estado anterior en el que todo funcionaba correctamente.

 

 Una vez en este archivo, lo editamos añadiendo el siguiente código al final respetando la sintaxis del lenguaje.

function auto_delete_users() {
	global $wpdb;
	$userlevel = 0; // 0 = subscriber
	$deleteafter = 30; // Borra usuario despues de 30 dias
	$query = $wpdb->prepare("SELECT $wpdb->users.ID FROM $wpdb->users LEFT JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key = %s AND $wpdb->usermeta.meta_value = %d AND DATEDIFF(CURDATE(), $wpdb->users.user_registered) > %d", $wpdb->prefix.'user_level',$userlevel,$deleteafter);

	if($oldUsers = $wpdb->get_results($query, ARRAY_N)){
		foreach ($oldUsers as $user_id) {
			wp_delete_user($user_id[0]);
		}
	}
}
add_action('daily_clean_database', 'auto_delete_users');
wp_schedule_event(time(), 'daily', 'daily_clean_database');

De este código, podemos cambiar la variable $deleteafter que es la encarga de establecer los días que debe llevar el usuario registrado para ser borrado. En este ejemplo 30 pero lo podemos modificar para adaptarlo a nuestras necesidades.

Otro valor que podemos cambiar será el de la variable $userlevel que es el encargado de indicar el tipo de cuenta de usuario que se trata. En este ejemplo está establecido en el valor 0 que es el correspondiente a las cuentas del rango Subscriptor. Podemos ver más información del nivel de usuario en este enlace.

Tras añadir este código, guardamos los cambios.