Удаление пользователей не подтвердивших почтовый ящик
Встречал ли кто-нибудь плагин или код со следующим функционалом:
1 нужно чтоб пользователю давался срок на подтверждение аккаунта в течении 7-ми дней,
2 если аккаунт не активировали в течении 7-ми дней, его нужно удалить автоматически
3 старые и другие (активированные и неактивированные) аккаунты не должны быть затронуты
--
пока что остановился на модернизации кода:
1 отказался от идеи удаления, лучше добавлю новую роль и сделаю чтоб крон менял роли
$result = add_role( 'not_activ_user', 'Not activ user', array( 'read' => true, // true разрешает эту возможность 'edit_posts' => false, // true разрешает редактировать посты 'upload_files' => false, // может загружать файлы ) ); // remove_role( 'subscriber' );
2 можно подключить проверку wp_users->user_activation_key по которой можно определять не активированных пользователей.
$user_info = get_userdata($user_id); if ($user_info->user_activation_key ){ // }
3 с этим кодом ещё не разобрался, буду править (не понимаю в выборках sql):
3.1 выборку по роли и активации
3.2 выборку 7-8 дней, не больше и не меньше - не нужны ни старые ни новые юзеры, нужны 7-мидневки
3.3 добавлю фильтр на проверку активированности
3.4 как потестирую, уверен нужно будет ещё что-то править
// automatically delete users after 7 days in wordpress function wcs_auto_delete_users() { global $wpdb; $query = $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE datediff( now(), user_registered ) > 7" ); if ( $oldUsers = $wpdb->get_results( $query, ARRAY_N ) ) { foreach ( $oldUsers as $user_id ) { update_user_meta( $user_id[0] , 'wp_capabilities', 'not_activ_user'); //wp_delete_user( $user_id[0] ); } } } add_action( 'wcs_daily_clean_database', 'wcs_auto_delete_users' ); wp_schedule_event( time(), 'daily', 'wcs_daily_clean_database' );
Делал такое - но юзер имел роль unsubscriber.
А дата регистрации есть в таблице.
Прогонял по дате через sql - выбирал те что старше недели.
Удалял юзеров, а их мейлы писал в другую таблицу - потом фильтром в момент регистрации эти спам мейлы отсекаю - если есть снова попытка на них зарегать. Ниразу не было чтоб мне юзер написал и сказал что мейл не проходит. А попытки на такие мейлы вновь зарегать были.
Но это было все в экосистеме wp-recall плагина. Там с этим легко работать и расширять.
Делал подобную приблуду, только там не удалялись юзверги а переводились из одной группы в другую. Но там для даты нужно заводить дополнительное поле.