Очистить пользователей в WordPress
Как избавиться от роботов-спамеров, которые регистрируются в многочисленных блогах, чтобы получить обратную ссылку?
Для этого скрипт, который нужно выложить в сеть, может выполнить операцию: стереть в блок все спамы, то есть фиктивные регистрации с целью размещения в блоге URL своего сайта.
Скрипт берет список пользователей в базе данных и стирает всех, кто никогда не добавлял комментариев.
Для этого необходимо изучить таблицы Wordpress, используя реляционную базу данных, чтобы обнаружить связи между разными таблицами и удалить пользователя, удалить ссылки на этого пользователя во всех таблицах.
Таблица Wordpress и пользователи
Таблица пользователей:
ТО ЖЕ | user_login | ... | user_nicename | ||
Уникальный номер | Ник пользователя | Отображаемое имя |
В других таблицах осуществляется поиск ссылок на идентификатор пользователя или логин, имя пользователя или другие данные .
Таблица сообщений:
post_author | |||||
Идентификатор пользователя |
Идентификатор пользователя появится в таблице билетов, если он создал его (на совместном сайте).
Таблица комментариев:
comment_author | ... | user_id | |||
Имя, указанное во время комментария | Идентификатор зарегистрированного пользователя |
Чтобы узнать пользователя, необходимо просмотреть таблицу комментариев. Она содержит несколько сведений о пользователе, взятых во время вывода комментария, и его идентификаторе. Только последнее поле нас интересует, пользователи, чей ID присутствует в этой таблице, не должны удаляться.
Таблица usermeta:
user_id | |||||
Идентификатор пользователя |
Содержит параметры пользователя и, следовательно, его идентификатор.
Таблица links:
link_owner | |||||
Идентификатор пользователя |
Это список блогроллов для каждого пользователя.
Запрос SQL
Условие :
- означает список пользователей.
- Сравнивает ее с таблицей комментариев.
- Сравнивает ее с билетным столом.
- Уменьшите список пользователей, исключив тех, кто написал пост или комментарий.
- Исключает идентификатор администратора 1.
Действие:
Для выбранных пользователей.
- Стирает запись в таблице пользователей.
- стирает записи в таблице usermeta.
- стирает записи в таблице ссылок.
Взять список пользователей
И устранить номер 1
Полные запросы
Предварительное испытание
Для предварительного просмотра списка стертых счетов используйте следующую команду :
Пример с суффиксом wp _
Очищение
В трех соответствующих таблицах вместо SELECT * используется DELETE.
Для таблицы usermeta также заменяется ID на user_id.
Для таблицы links заменяется ID на link_owner
Ограничения
Плагины
Часто используемые плагины не создают таблицы и не влияют на пользователей.
Но не исключено, что плагины, специализирующиеся на управлении пользователями или статистике, создадут новую таблицу, которая привязана к таблице пользователей. Это можно проверить с помощью phpMyAdmin.
Несколько счетов
Если создать несколько аккаунтов для доступа на сайт, а они не используются для создания поста или комментария, они будут удалены.
Использовать сценарий
Вместо того, чтобы каждый раз, когда ты хочешь очистить базу данных, делать три SQL-команды, ты создашь скрипт для выполнения операции, который выложишь в сеть.
Исходный код:
<?php include("wp-config.php"); $usertable=$table_prefix."users"; $commentable=$table_prefix."comments"; $usermeta=$table_prefix."usermeta"; $postable=$table_prefix."posts"; $linktable=$table_prefix."links"; $db_handler=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("MySQL database '".DB_NAME."' not accessible."); mysql_select_db(DB_NAME, $db_handler) or die("Enable to select ".DB_NAME." database
\n"); $query1="DELETE FROM $usertable WHERE ID > 1 AND ID NOT IN (SELECT DISTINCT post_author FROM $postable) AND ID NOT IN (SELECT DISTINCT user_id FROM $commentable)"; $query2="DELETE FROM $usermeta WHERE user_id > 1 AND user_id NOT IN (SELECT DISTINCT post_author FROM $postable) AND user_id NOT IN (SELECT DISTINCT user_id FROM $commentable)"; $query3="DELETE FROM $linktable WHERE link_owner > 1 AND link_owner NOT IN (SELECT DISTINCT post_author FROM $postable) AND link_owner NOT IN (SELECT DISTINCT user_id FROM $commentable)"; mysql_query($query1,$db_handler); mysql_query($query2,$db_handler); mysql_query($query3,$db_handler); echo "Done!"; ?>
Чтобы использовать его...
Этот скрипт не тестируется с каждой новой версией Wordpress. Возможно, он не работает с новой версией.
- Загрузить архив и извлечь его в корневой каталог сайта Wordpress.
- Измените имя файла.
- Проверить сценарий на локальной версии сайта. Для этого посмотрите, как установить Wordpress локально, чтобы получить эту локальную версию.
- Сделайте резервную копию базы данных с помощью phpMyAdmin или эквивалентного инструмента. Функции экспорта недостаточно. В
- строке URL-адреса браузера введите URL-адрес сценария.