Flector

Clean Up Users

У вас открыта регистрация пользователей в блоге и при этом нет никакой сложной капчи? Поздравляю, весь ваш блог практически полностью забит "липовыми" пользователями спам-скриптов. За исключением, конечно, ситуации когда для написания комментария пользователю приходится зарегистрироваться в блоге. Но и тут не слишком обольщайтесь, доля спам-юзеров у вас наверняка превышает долю "честных" юзеров. Когда я избавлялся от спамных комментариев мне как-то в голову не пришло, что такой путь избавит меня только от спама в комментах, но вовсе не спасет от спама базы данных левыми профилями. Вы удивитесь, но все мои попытки найти плагин по удалению неактивных пользователей в WordPress провалились, нет таких плагинов вообще (может я плохо ищу?), а вопросы насчет чистки базы данных от неактивных юзеров на официальном форуме WordPress остаются без ответа. С трудом я нашел один единственный плагин, выполняющий данную функцию. Это плагин Clean Up Users, простенький, практически без настроек и при этом не лишенный недостатков, но справляющийся со своей работой.

Скачиваем плагин по ссылке внизу этой статьи (на домашнюю страницу плагина очень проблематично попасть с русского IP адреса) и устанавливаем его:

1. Распаковываем архив.

2. Копируем файл deleteusers.php в /wp-content/plugins/.

3. Заходим в админку блога на вкладку "Плагины" и активируем плагин.

Прежде чем начать удалять неактивных пользователей из базы данных попробуем оценить какое их количество присутствует в блоге. Для этого установим маленький хак, который даст возможность просматривать в "Авторах и Пользователях" количество комментариев у каждого пользователя. Данный хак будет включен по умолчанию в одной из следующих версий WordPress, но сейчас придется его установить вручную (установка хака совершенно необязательна, вы можете сразу начать работать с плагином).

Откройте файл wp-admin\includes\template.php и найдите строку:

902
'posts' => __('Posts')

добавьте после нее строку:

903
'comments' => __('Comments')

найдите строку:

1897
$numposts = get_usernumposts( $user_object->ID );

добавьте после нее строку:

1898
$numcomments = get_usernumcomments( $user_object->ID );

найдите строки:

1970
1971
} else {
        $r .= 0;

и замените их строками:

1970
1971
1972
1973
1974
1975
1976
1977
	} 
	$r .= "</td>"; 
	break; 
case 'comments': 
	$attributes = 'class="num"' . $style; 
	$r .= "<td $attributes>"; 
	if ( $numcomments > 0 ) { 
		$r .= $numcomments;

Откройте файл wp-admin\includes\user.php и добавьте туда после 194 строки (да в любое место между функциями) строки:

195
196
197
198
199
200
function get_usernumcomments($userid) { 
	global $wpdb; 
	$userid = (int) $userid; 
	$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE user_id = %d AND comment_approved = '1'", $userid)); 
	return apply_filters('get_usernumcomments', $count, $userid); 
}

На этом все, хак установлен и теперь вы можете наблюдать в "Авторах и Пользователях" новую колонку с количеством комментариев у пользователя. Если вам лень ковырять вручную эти файлы, то вы можете скачать уже исправленные файлы отсюда (строго для версии WordPress 2.8.4). Удивились сколько у вас пользователей ни разу не написавших комментарий?

Управление плагином находится в "Параметрах\DDCleanUpUsers". Вы увидите что-то типа:

По умолчанию плагин удаляет пользователей, у которых нет ни постов, ни комментариев и которые имеют статус "Подписчик". Если на вашем блоге зарегистрированные пользователи по умолчанию получают другую роль (например, "Автор"), то вам надо подправить плагин на строчках:

23
24
25
26
27
// user roles
$skip_admins = TRUE;
$skip_editors = TRUE;
$skip_authors = TRUE;
$skip_contributors = TRUE;

Поставьте значение "FALSE" в нужном месте (например, чтобы не пропускать "Авторов" при удалении неактивных юзеров надо поставить $skip_authors = FALSE;).

Если в вашем блоге много зарегистрированных пользователей, то после нажатия на кнопку "Submit" вам придется подождать пару минут, пока плагин проверит всех пользователей, зарегистрированных в блоге. Результатом будет что-то типа:

Интересно? Я когда увидел, что плагин удалил почти всех моих пользователей в блоге схватился за голову и подумал, что плагин напортачил и удалил вообще всех моих зарегистрированных пользователей. Собственно, выше приведенный хак я установил именно по той причине, что не поверил в то количество спам-юзеров в моем блоге, которое нашел плагин (не обращайте внимание на то, что плагин удалил 2926 пользователей, когда по скриншоту в самом начале статьи их было всего 2919 - просто пока я писал статью и делал скриншоты спам-юзеров в базе у меня прибавилось). Так вот после установки хака просмотра комментариев у юзеров я не поленился и пролистал все 59 страниц, чтобы убедиться в том, что у меня на самом деле всего 12 "честных" пользователей (и это при 1418 одобренных комментариев в блоге!). После такой статистики желание делать открытой регистрацию в блоге как-то пропадает. Ведь и в самом деле, если незарегистрированный пользователь никак не ограничен в правах, то зачем ему регистрироваться? Ведь любой современный браузер запоминает введенные поля при комментировании и пользователю банально не нужна регистрация, чтобы полноценно пользоваться блогом.

Ладно, способ отсечь регистрацию спам-юзеров я изложу в следующей статье, а пока все еще про чистку юзеров. Плагин превосходно сработал у меня на localhost, но не стал работать у хостера. Почему не стал я довольно быстро выяснил - в нем используется хитрый навороченный mysql запрос, который работает только в mysql версии 5 и выше. А у моего хостера стоит только 4 версия mysql. Перебороть хитрый запрос мне не удалось и пришлось переписать весь плагин подчистую, заменив один большой запрос на кучу маленьких, но зато встроенных в сам WordPress и поэтому работающих на любой версии mysql выше 4. Заодно плагин был и русифицирован. Вообще, когда у меня появится свободное время я доведу плагин до ума и выпущу его под другим названием, а пока пользуйтесь тем, что есть.

И последнее: прежде, чем удалять юзеров сделайте на всякий случай копию своей базы данных. Не думаю, что это обязательно, но все равно сделайте.

 

Автор плагина: Keith Dsouza
Скачать оригинальную версию плагина: cleanupusers.zip
Скачать исправленный русский плагин: cleanupusers-ru.zip
Рассматриваемая версия: 1.00 от 25.07.2009
Совместимость с версией WordPress: 2.3 и выше.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Комментарии (всего 27 комментариев)
Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


Подписаться на уведомления без комментирования.