hakre
  • 0
Гуру

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

  • 0

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

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

альтернативный текст

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

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

Share
  1. Это трудно взломать. Достаточно просто сделать внутренние ссылки невидимыми для средства проверки ссылок, но невозможно вернуть их в исходное состояние до того, как они будут вставлены в базу данных. Если только не взломать ядро. Чего никогда не следует делать, если только это не делается для исправления.

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

    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();
    

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

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

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

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

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

    • 0

Оставить ответ

You must login to add an answer.