Блог Дмитрия Волотко Подпишись на обновления!

Грохаем отклонённые комментарии в вашем WordPress автоматически

В WordPress есть замечательная плюшка, ставить комментарии, в которых больше указанного количества ссылок, в очередь на модерацию. Раньше я их убивал руками, либо они у меня висели огромными пачками, засоряя базу. Пусть некритично, но крайне противно, такое ощущение, что прохо принял душ на ночь, после целого дня работы на даче. Но есть очень простой способ грохать такие комментарии, требующий от вас минимум затрат времени.

Если вы не поняли, о чём я сейчас говорю, то вот вам часть скрина (он кликабелен):

Думаю теперь всё ясно.

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

  1. Скрипт лежит в недоступном для Веба месте, что бы БД не замучили;
  2. Скрипт выполняется по крону раз в 12 часов;
  3. Когда мне приходит нотис о том, что нужно что-то промодерировать, то я его игнорирую, при этом не ставлю пометку “прочитано”. Вечером, если выдаётся минутка, то просматриваю их, если что-то попадётся приличного – апрувлю (ещё ни разу не попалось, в настройках блога стоит три ссылки). В четыре утра и в четыре дня скрипт чистит эти комменты;

Как настраивать крон я вас учить не буду, если сами не умеете – напишите в ТП своего хостера, мне и из консольки прикольно.

`comment_approved` = “0″ – ждут модерации;
`comment_approved` = “1″ – одобрены;
`comment_approved` = “spam” – без комментариев;

<?php
$hostname = “localhost”;
$username = “absolvo”;
$password = “pwd”;
$dbName = “blog”;

MYSQL_CONNECT($hostname,$username,$password) OR DIE(“Не могу создать соединение “);
@mysql_select_db(“$dbName”) or die(“Не могу выбрать базу данных “);

$spam = mysql_query(‘SELECT `comment_ID` , `comment_approved` FROM `wp_comments` WHERE `comment_approved` = “0″‘) or die(‘Error!’);
while ($row = mysql_fetch_array($spam)) {
mysql_query(‘DELETE FROM `wp_comments` WHERE `wp_comments`.`comment_ID` =’. $row['comment_ID'] .”);
}
?>

Теперь необходимо затрачивать как минимум на два клика меньше, чем вы делали это раньше, и БД от мусора будет избавляться в автоматическом режиме.

Вам нужно будет вписать свои данные (пароль, БД, юзверя и хост), и настроить крон.

Так же можно почитать:



# 25 Augu 2008 в 17:42

vvsh

Хорошая вещь, если буду переносить свой блог на вордпресс, то обязательно воспользуюсь.

# 25 Augu 2008 в 17:44

Социальная сеть для блоггеров sloger.net

Грохаем отклонённые комментарии в вашем WordPress автоматически…

В WordPress есть замечательная плюшка,ставить комментарии,в которых больше указанного количества ссылок, в очередь на модерацию.Раньше я их у…

# 25 Augu 2008 в 17:48

Волотко Дмитрий

@vvsh, WP – это хороший движок, так что переходи :)

# 25 Augu 2008 в 18:15

Иван Шумов

А я буду писать свой блог – там будет только то что мне реально надо

# 25 Augu 2008 в 18:18

Волотко Дмитрий

@Иван Шумов, Вань – да бога ради. Есть сутки свободного времени? Так вперёд :) Я отказался от такого подхода.

# 25 Augu 2008 в 23:00

vvsh

Я сначало тоже хотел сделать свой движок для блога, но пока знаний маловато.

# 27 Augu 2008 в 8:42

Василий

Очень и очень хорошо, что вы это выложили. Спасбо!
Вот только бы с кроном разобратся. У меня никак не выходит – то он глючит, то не работает. Неприятно – мусора в БД огромная пачка :(

# 27 Augu 2008 в 12:10

Волотко Дмитрий

@cleptolog, зачем?
Конечно, фильтровать нужно – но тут нет не единного параметра, который идёт из вне. Плюс скрипт из Веба не виден.

# 27 Augu 2008 в 21:50

Волотко Дмитрий

@blackdog, какие? Скопируйте, плиз.

# 27 Augu 2008 в 22:15

blogomober

Есть проблемы с кроном? заюзайте сторонние сервисы, например cronjob.ru

# 27 Augu 2008 в 22:19

Волотко Дмитрий

@blogomober, скрипт придётся открывать вовне, теоритически могут заддосить БД. Надо будет скрипт править.

# 28 Augu 2008 в 17:47

Иван Петрович

антиспамер поставить и дело с концом. для удаления одну кнопочку нажимаешь и все.

# 28 Augu 2008 в 17:54

Волотко Дмитрий

@Иван Петрович, в чём выгода?

# 30 Augu 2008 в 0:22

hitalex

Обязательно воспользуюсь этим советом. На самом деле так быстрее будет убирать мусор

# 30 Augu 2008 в 12:33

Павел

Молодец, Дима! Когда у мну был блог, я как то не думал что так можно сделать)))

# 31 Augu 2008 в 10:31

Волотко Дмитрий

@Владислав, давайте я вам и помогу, что уж там.

# 31 Augu 2008 в 23:32

Evgeniy Artemyev

Все это конечно прекасно, но почему не править сам скрипт WordPress, что-бы он сам убивал таких. Выставить в определенное время и все.

# 31 Augu 2008 в 23:58

Волотко Дмитрий

@Evgeniy Artemyev, правка скриптов – это проблемы при обновлении. Потому легче юзать сторонний скрипт, не затрагивая ядро движка, и не трогая код.
Итого:
Во-первых, так проще;
Во-вторых, потом будет меньше проблем при обновлении;

# 1 September 2008 в 13:02

Tech

ну а не проще сделать что могут писать коменты просто зарегистрированые посетители ?

# 1 September 2008 в 17:48

Павел

@Tech лично меня бесит когда я не могу прокомментировать блог)))

# 1 September 2008 в 17:51

Волотко Дмитрий

@Tech, пользователям лениво это делать, в большинстве случаев :)
Вот к примеру Павел – яркое подтверждение тому.

# 3 September 2008 в 2:31

Статистика и доход с блога за август 2008 :: Tod’s Blog

[...] Дмитрий Волотко рассказывает как автоматические грохнуть отклонённые комментарии в WordP…. [...]

# 3 September 2008 в 15:52

Vasia

А не проще запретить комментарии? А так сервак и людей напрягать ( хотя конечно половина ботов)

# 3 September 2008 в 19:37

Волотко Дмитрий

@Vasia, нет, не легче.

# 7 September 2008 в 18:16

Таня Р.

Довольно полезная наработка, но это уже для более продвинутых наверное блоггеров. Ко мне так 1-2 спамчика если и приходят ( в основном порнуха) то я ручками удаляю. Настроили в админке, чтобы вообще не пропускались комменты с ссылками и все. Но в дальнейшем при росте спама, описанное в статье будет явно нужно.

# 7 September 2008 в 20:37

Волотко Дмитрий

@Таня Р., всему своё время – наверняка и вам понадобится вот такая чистилка мусора из БД.

# 8 September 2008 в 18:19

HvosT

Надеюсь поможет в борьбе со спам-комментами, а то на одном блоге Akismet пропускает до 50 спам-комментов в день.

# 9 September 2008 в 16:07

Волотко Дмитрий

@Креатив, я тоже задумывался над этим …

# 16 September 2008 в 16:43

оля

Надо на своем блоге попробовать, а то эти спамеры замучали.

# 5 October 2008 в 0:16

евгений

Спасибо за совет. А у меня почемуто не получается убрать поле вебсайт в коментах

# 19 October 2008 в 21:08

Russian Brides

>Однозначно просто убрать поле Website и колличество спам-комментариев резко уменьшится.
Вместе с ними резко уменьшится и число других комментариев. А какие интересно ограничения стоят по числу ссылок?

# 20 October 2008 в 7:53

Волотко Дмитрий

@Russian Brides, сейчас по дефолту – три.

# 12 February 2009 в 7:03

AlexPTS

Полезная вещь, а то устал удалять комментарии наполненные одними ссылками.

# 22 May 2009 в 10:45

mihdan

Запросы к базе нужно оптимизировать, так как подзапросы в цикле – не есть хорошо. Например

// Получим comment_ID, через запятую
$spam = array_pop(mysql_fetch_row(mysql_query(“SELECT GROUP_CONCAT(`comment_ID`) , `comment_approved` FROM `wp_comments` WHERE `comment_approved` = ’0′”)));
// Удалим комменты в один запрос
mysql_query(“DELETE FROM `wp_comments` WHERE `wp_comments`.`comment_ID` IN (${spam})”);

# 30 January 2010 в 21:49

Hard

Интересная вещь, очень полезно, а то спама очень много..

# 2 April 2010 в 16:55

Artem

Такая же проблема с комментариями, очень много времени уходит на удаление спама, теперь буду знать как решать эту проблему, спасибо!



* Должны быть заполнены.
Из-за дикого спама, и нежелания ставить капчу оставлять ссылку у комментария вообще нельзя. Точно так же нельзя оставлять ссылки в теле комментария.