WordPress Россия

Плагин WordPress "Clean Up Users" чистит ваш блог от неактивных пользователей.

Добавлено 30 апреля 2010 в категорию Плагины.

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

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

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

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

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

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

Откройте файл wp-adminincludestemplate.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-adminincludesuser.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 и выше.

Категории