it-swarm.xyz

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

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

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

alt text

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

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

3
hakre

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

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
John P Bloch

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

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

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

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

1
hakre