Лично я бы порекомендовал использовать несколько внутренних функций Wordpress, которые сделают эту работу за вас.
Первое - это использовать wp_delete_user () - это не только удалит запись пользователя, но и сотрет все связанные user_meta и сообщения, таким образом поддерживая вашу базу данных красивой и чистой.
Вторая рекомендация - использовать wp_schedule_event () - часть набора wp-cron
функций. Это может быть предпочтительнее, если у вас нет гибкости или доступа к настройке crontab на вашем текущем хосте (обратите внимание на использование этого ниже).
wp_schedule_event(time(), 'daily', 'my_dailyClearOut');
function my_clearOldUsers() {
global $wpdb;
$query = $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE datediff(now(), user_registered) > 30");
if ($oldUsers = $wpdb->get_results($query, ARRAY_N)) {
foreach ($oldUsers as $user_id) {
wp_delete_user($user_id[0]);
}
}
}
add_action('my_dailyClearOut', 'my_clearOldUsers');
Это должно сработать для вас (это именно то, что я сейчас использую).
Стоит отметить, что функции 'wp-cron' не совпадают со стандартным crontab - они запускаются только при доступе пользователя к сайту и, следовательно, далеко не так точны, как стандартный cron , Тем не менее, для этой конкретной функции, вы можете найти, что это хорошо.
Подсказка к @Sam для функции datediff()
- это здорово!