WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Удаление пользователей не подтвердивших почтовый ящик

Встречал ли кто-нибудь плагин или код со следующим функционалом:
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' );
Заметки к вопросу:
el-lable 8 Янв. 2020

Делал подобную приблуду, только там не удалялись юзверги а переводились из одной группы в другую. Но там для даты нужно заводить дополнительное поле.

Otshelnik-Fm 10 Янв. 2020

Делал такое - но юзер имел роль unsubscriber.
А дата регистрации есть в таблице.
Прогонял по дате через sql - выбирал те что старше недели.
Удалял юзеров, а их мейлы писал в другую таблицу - потом фильтром в момент регистрации эти спам мейлы отсекаю - если есть снова попытка на них зарегать. Ниразу не было чтоб мне юзер написал и сказал что мейл не проходит. А попытки на такие мейлы вновь зарегать были.
Но это было все в экосистеме wp-recall плагина. Там с этим легко работать и расширять.

0
kolshix
8 января 2020 546

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация