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. Заодно плагин был и русифицирован. Вообще, когда у меня появится свободное время я доведу плагин до ума и выпущу его под другим названием, а пока пользуйтесь тем, что есть.
И последнее: прежде, чем удалять юзеров сделайте на всякий случай копию своей базы данных. Не думаю, что это обязательно, но все равно сделайте.
Автор плагина:
Скачать оригинальную версию плагина: cleanupusers.zip
Скачать исправленный русский плагин: cleanupusers-ru.zip
Рассматриваемая версия: 1.00 от 25.07.2009
Совместимость с версией WordPress: 2.3 и выше.
Понравился пост? Подпишись на обновления по RSS или Twitter !
#21,
ну вот например. а вообще подобных плагинов много, остается только выбирать, какой из них вам больше подходит.
#22,
Видимо в последних версиях ВП сменился код?
В файле /wp-admin/includes/template.php нет строки
'posts' => __('Posts')
И даже части ее, типа 'posts' не нашел...
#23,
не в последних, а уже очень давно. статье от 2009 года же. я даже и не знаю, как подобный хак использовать в последних версиях движка.
#24,
а как теперь справляетесь с чисткой базы от левых юзеров?
#25,
ну, во-первых, хак не обязательно использовать, чтобы чистить блог от левых юзеров - он нужен только для того, чтобы визуально оценить сколько в блоге левых пользователей и только. ну а во-вторых, появились другие подобные плагины, об одном из них я как раз сейчас пишу статью.
#26,
пыфффф, установил, активировал, и сайт лег замертва.....
#27,
только что проверил - работает прекрасно.