Приветствую читателей всех блога Seobid.net! Недавно заглянул в профили пользователей одного из моих сайтов (просто ради любопытства), и ужаснулся увиденной там картинке – больше 4000 зарегистрированных человеков! И это при том, что комментариев у меня на этом сайте всего ничего – около двухсот. «Что это значит?» – подумал я, и тут же ответил сам себе: — «Не обольщайся, это все сплогеры и спамеры». Да, так оно и было в конечном счете, а теперь о том, как я это выяснил и что делал дальше.

Само понимаете, что удалять вручную четыре тысячи пользователей мне не хотелось. Да еще и выискивать при этом тех, кто оставил хоть одну запись – человек же не виноват, что я не заметил его коммента или записи, и удалил его под одну гребенку. Поэтому я решил, конечно, обратиться за помощью к великому и могучему. Вы будете удивлены, но все мои тщедушные попытки увидеть плагин, который удалял бы неактивных пользователей, не увенчались успехом.

Или их нет вообще, или я плохо искал – не знаю. Как почистить БД от неактивных пользователей, тоже никто мне не ответил. После нескольких часов бесполезного терзания интернета я все-таки нашел плагин, который способен это делать. Основная его функция – удалять зарегистрировавшихся спамеров. Akismet справляется со своей задачей на отлично, конечно, но он не удаляет этих безбашенных роботов и спамеров, которые выкладывают в комментарии целые рулоны со ссылками, из базы данных.

А плагин Clean Up Users (речь пойдет, как вы догадались, о нем) делает именно это – он отсеивает тех пользователей, у кого после регистрации на сайте нет ни одной записи в блоге. А это значит, что человек вам в любом случае не нужен – либо он зарегистрировался ради любопытства, либо по ошибке (такое тоже бывает), либо с целью написать вам какую-нибудь гадость, которую Akismet уже давно удалил в спам.

 Установка плагина Clean Up Users

И вообще, если вы видите, что у вас орда пользователей, а регистрация несложная, без капчи, то смело можно утверждать, что в блоге вашем полно партизан. Редко кто регистрируется с целью именно написать комментарий или предложить свою тему для статьи. В этом я убедился на своих нескольких проектах. А теперь к делу. Сначала скачаем и установим плагин Clean Up Users. Существует, как и прежде, два основных варианта установки:

  1. Вы упорно ищете этот плагин в интернете, ничего не зная о его содержимом (может, кто-то туда уже вирус засунул или свою ссылку), скачиваете его и устанавливаете таким вот способом: распаковываете архив с плагином, и копируете его (к счастью, это только один файл deleteusers.php) в папку в /wp-content/plugins/. Можно по FTP, а можно при помощи файл-менеджера. Дальше заходите в админпанель вашего блога во вкладку меню «Плагины» и активируете плагин.
  2. Способ второй, для более шустрых – в той же вкладке «Плагины» вбиваете в строку поиска название плагина, устанавливаете его без риска заражения вирусами (потому что хранится он в репозитарии, где и проверяется предварительно на наличие всякой гадости), активируете и пользуетесь. По-моему, второй способ быстрее, легче и безопаснее.

Теперь у нас появилась новая задача – выяснить, сколько их вообще в блоге этих, так называемых неактивных пользователей. Это можно сделать при помощи небольшого фрагмента кода, который поможет увидеть в «Пользователях» и «Авторах» (вкладка «Все пользователи») количество комментариев, а количество записей отображается и так. Хотя можно обойтись и без него. Открываем файл wp-admin\includes\template.php и ищем строчку:

 'posts' => __('Posts')

Добавляем после нее такой код:

 'comments' => __('Comments')

Теперь после строчки:

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

Добавляем следующий фрагмент кода:

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

Еще один шаг — ищем:

 } else {
        $r .= 0;

Заменяем на код:

	} 
	$r .= ""; 
	break; 
case 'comments': 
	$attributes = 'class="num"' . $style; 
	$r .= "
"; 
	if ( $numcomments > 0 ) { 
		$r .= $numcomments;

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

 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); 
}

Теперь вы можете увидеть в «Авторах» и «Пользователях» новый столбец с общим количеством комментариев для каждого пользователя. Вы будете «приятно» удивлены, когда обнаружите, сколько у вас пользователей, которые ни разу не написали комментарий.

Идем дальше. Управлять плагином нужно отсюда: «Параметры» — «DDCleanUpUsers». Для моего блога эта страница выглядела вот с таким количеством пользователей:

 Работа плагина Clean Up Users

По умолчанию настройки плагина направлены на удаление пользователей без записей и комментариев со статусом «Подписчик». Если ваш сайт настроен по-другому (например, зарегистрированные пользователи имеют роль «Автора»), то вы должны в файле плагина исправить вот эти строчки:

// user roles
$skip_admins = TRUE;
$skip_editors = TRUE;
$skip_authors = TRUE;
$skip_contributors = TRUE;

Нужно поставить функцию «FALSE» для тех пользователей, которые вам нужны. Я поставил везде, кроме $skip_admins. К примеру, чтобы вы не пропустили пользователей с правами автора при удалении неактивных, нужно поставить«FALSE» здесь:

$skip_authors = FALSE;

Если вы обнаружили в блоге много зарегистрированных пользователей, так же, как и я, то после запуска плагина (нажмите на кнопку «Submit») пройдет минуты 2-4, пока плагин обойдет всех ваших пользователей, которые уже были зарегистрированы в блоге. В результате вы получите приблизительно вот такую картинку:

 Результат работы плагина Clean Up Users

Вот такая интересная арифметика – было 4136 пользователей, а стало 78! Когда я увидел, что плагин Clean Up Users удалил более четырех тысяч пользователей в моем блоге, то просто ужаснулся. Я подумал – что-то не так, плагин неправильно работает. На самом деле все правильно – я сначала не посмотрел, сколько было у моих пользователей комментариев и записей, а их было по нескольку штук или десятков от одного пользователя. Получается, что при более чем тысяче записей на блоге всего 77 пользователей были честными и писали правильные комментарии.

После такого просмотра статистики я всерьез задумался о закрытии регистрации на блоге, хотя это тоже не выход. Но, если спамер хоть раз уже зарегистрировался, то любой браузер подскажет ему в следующий раз, какие нужны данные для входа, а значит, повторная регистрация ему уже не нужна. Значит, остается только один выход – время от времени чистить базу пользователей, и все.

Думаю, что есть способ как-то оградить себя от регистрации спамеров, и я его обязательно найду, о чем и расскажу вам в следующей статье. А пока поговорим еще об очищении базы незарегистрированных пользователях. Плагин Clean Up Users отлично работал на Денвере, но после переноса на сервер он искривился.

Почему это произошло – стало понятно  довольно быстро выяснил — в плагине существует один mysql запрос, который будет работать только в MySQL 5 и выше. На том хосте, что я тестировал, была MySQL 4. Поэтому, чтобы не переделывать плагин (не вижу смысла – обновление убьет его, да и хостер был так себе), я просто сменил хостинг, и все заработало. И последнее пожелание: перед чисткой базы пользователей сделайте резервную копию базы данных – береженого Бог бережет.