Очистить пользователей в WordPress

Как избавиться от роботов-спамеров, которые регистрируются в многочисленных блогах, чтобы получить обратную ссылку?

Для этого скрипт, который нужно выложить в сеть, может выполнить операцию: стереть в блок все спамы, то есть фиктивные регистрации с целью размещения в блоге URL своего сайта.

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

Таблица Wordpress и пользователи

Таблица пользователей:

ТО ЖЕ user_login ... user_nicename    
Уникальный номер Ник пользователя   Отображаемое имя    

В других таблицах осуществляется поиск ссылок на идентификатор пользователя или логин, имя пользователя или другие данные .

Таблица сообщений:

  post_author        
  Идентификатор пользователя        

Идентификатор пользователя появится в таблице билетов, если он создал его (на совместном сайте).

Таблица комментариев:

  comment_author ...     user_id
  Имя, указанное во время комментария       Идентификатор зарегистрированного пользователя

Чтобы узнать пользователя, необходимо просмотреть таблицу комментариев. Она содержит несколько сведений о пользователе, взятых во время вывода комментария, и его идентификаторе. Только последнее поле нас интересует, пользователи, чей ID присутствует в этой таблице, не должны удаляться.

Таблица usermeta:

  user_id        
  Идентификатор пользователя        

Содержит параметры пользователя и, следовательно, его идентификатор.

Таблица links:

  link_owner        
  Идентификатор пользователя        

Это список блогроллов для каждого пользователя.

Запрос SQL

Условие :

- означает список пользователей.
- Сравнивает ее с таблицей комментариев.
- Сравнивает ее с билетным столом.
- Уменьшите список пользователей, исключив тех, кто написал пост или комментарий.
- Исключает идентификатор администратора 1.

Действие:

Для выбранных пользователей.

- Стирает запись в таблице пользователей.
- стирает записи в таблице usermeta.
- стирает записи в таблице ссылок.

Взять список пользователей

ВЫБЕРИТЕ ИДЕНТИФИКАТОР ИЗ wp_users

И устранить номер 1

SELECT ID FROM wp_users WHERE user_id> 1

Полные запросы

Предварительное испытание

Для предварительного просмотра списка стертых счетов используйте следующую команду :

SELECT * FROM $ usertable WHERE ID> 1 AND ID NOT IN (ОТДЕЛЬНЫЙ ВЫБОР post_author ОТ $ POSTABLE) И ИДЕНТИФИКАТОР НЕ IN (ОТДЕЛЬНЫЙ ВЫБОР user_id $ COMMENTABLE)

Пример с суффиксом wp _

SELECT * FROM wp_users WHERE ТО ЖЕ> 1 AND ТО ЖЕ NOT IN (РАЗЛИЧНЫЙ SELECT post_author FROM wp_posts) AND ТО ЖЕ NOT IN (РАЗЛИЧНЫЙ SELECT user_id FROM wp_comments)

Очищение

В трех соответствующих таблицах вместо SELECT * используется DELETE.

DELETE FROM wp_users WHERE ТО ЖЕ> 1 AND ТО ЖЕ NOT IN (РАЗЛИЧНЫЙ SELECT post_author FROM wp_posts) AND ТО ЖЕ NOT IN (РАЗЛИЧНЫЙ SELECT user_id FROM wp_comments)

Для таблицы usermeta также заменяется ID на user_id.

DELETE FROM wp_usermeta WHERE user_id> 1 AND user_id NOT IN (РАЗЛИЧНЫЙ SELECT post_author FROM wp_posts) AND user_id NOT IN (РАЗЛИЧНЫЙ SELECT user_id FROM wp_comments)

Для таблицы links заменяется ID на link_owner

DELETE FROM wp_links WHERE link_owner> 1 AND link_owner NOT IN (РАЗЛИЧНЫЙ SELECT post_author FROM wp_posts) AND link_owner NOT IN (РАЗЛИЧНЫЙ SELECT user_id FROM wp_comments)

Ограничения

Плагины

Часто используемые плагины не создают таблицы и не влияют на пользователей.
Но не исключено, что плагины, специализирующиеся на управлении пользователями или статистике, создадут новую таблицу, которая привязана к таблице пользователей. Это можно проверить с помощью 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. Возможно, он не работает с новой версией.

  1. Загрузить архив и извлечь его в корневой каталог сайта Wordpress.
  2. Измените имя файла.
  3. Проверить сценарий на локальной версии сайта. Для этого посмотрите, как установить Wordpress локально, чтобы получить эту локальную версию.
  4. Сделайте резервную копию базы данных с помощью phpMyAdmin или эквивалентного инструмента. Функции экспорта недостаточно.
  5. В
  6. строке URL-адреса браузера введите URL-адрес сценария.