Количество внешних ссылок в комментариях - Опция Модерации


Я только что столкнулся с проблемой правильного использования количества внешних (то есть без относительных или абсолютных ссылок на мой собственный блог) ссылок в моем блоге для Модерации комментариев Опция подсчета.

Он помечен Удерживайте комментарий в очереди, если он содержит [ваш номер здесь] или несколько ссылок. (Общей характеристикой спама комментариев является большое количество гиперссылок.) в Настройках -> Обсуждение в бэкэнде Wordpress. Снимок экрана:

alt text

Я знаю, что в настоящее время он подсчитывает все ссылки в списке. ссылки на блог и другие комментарии (сообщили об этом здесь: #14681) но я не могу себе представить, что уже нет плагина или взлома, который бы правильно корректировал количество только внешних ссылок.

Итак, мой вопрос: Есть ли плагин/хак, который заставляет Wordpress правильно учитывать только внешние ссылки в комментариях для параметров модерации?

Author: hakre, 2010-08-24

2 answers

Ха-ха, я действительно придумал, как это сделать. Как плагин, это должно работать.

class JPB_CommentCounter {

  var $count = 0;

  function __construct(){
    add_filter( 'pre_comment_content', array( $this, 'content' ), 100 );
    add_filter( 'comment_max_links_url', array( $this, 'counter' ) );
  }

  function JPB_CommentCounter(){
    $this->__construct();
  }

  function counter( $num, $url ){
    if($this->count < 1)
      return $num;
    elseif( $this->count > $num )
      return 0;
    else
      return $num - $this->count;
  }

  function content( $content ){
    $homeurl = preg_quote( home_url() );
    if( preg_match_all( '@<a [^>]*href=[\'|"](/|'.$homeurl.')@i', $content, $matches ) )
      $this->count = count($matches[0]);
    return $content;
  }

}

$JPBCC = new JPB_CommentCounter();

Я должен добавить, что я никоим образом не проверял это. Но теоретически это должно сработать.

 1
Author: John P Bloch, 2010-09-02 20:15:37

Теперь я написал полный плагин для этого, который предлагает базовый интерфейс подсчета ссылок для добавления комментариев с wordpress 3.0. В дополнение к тому, что предложил Джон, я внес некоторые изменения/добавления, основанные на отслеживании крючков, вызванных добавлением комментария, так как я хотел, чтобы это выполнялось только при фактическом добавлении нового комментария.

Поэтому я выбрал comment_text вместо крючка pre_comment_content. Остальное в основном то же самое, но были добавлены некоторые проверки на вменяемость, так что это только get выполняется один раз и только при добавлении нового комментария. Дополнительной (но в настоящее время не выполненной) проверкой было бы включить ее только после того, как опция comment_max_links была прочитана get_option()(pre_option_comment_max_links-крючок), но на данный момент это прошло тестирование, я пока этого не сделал.

Исходный код можно просмотреть онлайн в trac.

Я дам ответ Джону, даже если я не выбирал его предложение, так как он сначала опубликовал здесь тот же принцип.

 1
Author: hakre, 2010-11-05 19:15:22