Плагин Akismet удаляет спам, несмотря на предпочтения


Любопытно, что Akismet удаляет старые комментарии со спамом через некоторое время (я предполагаю, что в течение недели).

Этот флажок НЕ отмечен:

Автоматическое удаление спама, отправленного в сообщениях более чем месячной давности.

Я отправил сообщение в службу поддержки Akismet более недели назад, но до сих пор не получил ответа.

Я не хочу, чтобы Akismet что-либо удалял. Я не проверяю достаточно часто, чтобы проверить ложные срабатывания, поэтому я хочу, чтобы все комментарии сохраняются на неопределенный срок, даже спам.

Кто-нибудь знает, почему он удаляет спам-комментарии, даже если он настроен не так? Кто-нибудь знает обходной путь?

Author: Sparky, 2011-12-13

2 answers

Я бы вообще не рекомендовал изменять файлы для плагинов, которые вы не контролируете. Лучше было бы написать свой собственный сайт/пользовательский плагин, чтобы управлять этим крючком:

add_action('akismet_scheduled_delete', 'akismet_delete_old');

Во-первых, чтобы полностью остановить удаление, просто вызовите:

remove_action('akismet_scheduled_delete', 'akismet_delete_old');

Затем вы можете настроить задание cron (или аналогичное), чтобы запустить функцию akismet_delete_old() на любой частоте, которую вы предпочитаете.

Редактировать

Чтобы быть более ясным: я имею в виду сайт/пользовательский плагин, который взаимодействует с Акисмет - невилка/замена Akismet. Поскольку Akismet добавляет функцию удаления комментариев в качестве обратного вызова для крючка действия, специфичного для плагина, вы можете переопределить это добавленное действие из за пределами Плагина.

Вызов remove_action() выше просто остановит выполнение кода удаления комментариев вообще. Если вы хотите включить менее частое удаление комментариев, вы можете использовать несколько методов:

  1. Перепишите обратный вызов akismet_delete_old() (как вы сделали в своем собственный ответ), а затем подключите его к akismet_scheduled_delete
  2. Напишите свое собственное задание cron для запуска на желаемой частоте
  3. И т.д.

Примечание: существует сопутствующий обратный вызов akismet_delete_old_meta(), который также может потребоваться изменить/удалить из действия akismet_scheduled_delete.

 3
Author: Chip Bennett, 2012-04-30 19:55:16

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

Автоматическое удаление спама, отправленного в сообщениях более чем месячной давности.

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

Что касается первоначального вопроса о том, как остановить комментарии после удаления...

Они автоматически удаляются через 15 дней, независимо от того, что . Akismet думает, что им лучше знать! Они предполагают, что вы хотите удалить спам через 2 недели, потому что они также предполагают, что 15 дней - это более чем достаточно времени для вас, чтобы убедиться, что комментарий был помечен правильно.

Я спросил их, почему они не могут просто предоставить пользователю возможность выбора, и я получил некоторое оправдание о том, как тысячи спам-комментариев могут отключить сервер. Хорошо, это правда. Но то же самое может произойти, если плагин Akismet не был установлен в первую очередь. Отдайте должное администратору за то, что он может принять собственное решение относительно своей установки. Но этого не произойдет.


Я понимаю, что редактирование основных файлов не одобряется, но вот как я решил справиться с этим для своего собственного сайта.

Эта строка в файле wp-content/plugins/akismet/akismet.php...

$comment_ids = $wpdb->get_col("SELECT comment_id FROM $wpdb->comments WHERE
DATE_SUB('$now_gmt', INTERVAL 15 DAY) > comment_date_gmt AND
comment_approved = 'spam'");

Я отредактировал INTERVAL 15 DAY до 180 дней, что дало мне более чем достаточно времени для просмотра комментариев перед удалением.

РЕДАКТИРОВАТЬ:

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


РЕДАКТИРОВАТЬ 2:

Согласно полезному предложению @Chipbennett, я создал плагин, который ничего не делает, кроме как отключает удаление комментариев плагином Akismet. Эта простая вещь позволяет избежать всей проблемы, связанной с необходимостью изменения плагина Akismet.

Я просто создал следующий файл php и поместил его в каталог плагинов (wp-content/plugins/)

<?php
/**
 * @package Akismet_keep_comment
 * @version 1.0
 */
/*
Plugin Name: Akismet Keep Comment
Plugin URI: 
Description: This plugin removes the comment deletion ability of the Akismet plugin
Author: Me
Version: 1.0
Author URI: http://www.mysite.com
*/

remove_action('akismet_scheduled_delete', 'akismet_delete_old');

?>

Затем я "активировал" его через страницу плагина на панели мониторинга.

 0
Author: Sparky, 2012-04-30 20:50:31