web-dev-qa-db-ja.com

コメント内の外部リンクの数 - モデレーションオプション

私は、コメントモデレーションcountオプションのために私のブログ上の外部(私自身のブログへの相対的または絶対的リンクがないことを意味する)リンクのカウントを正しく使うための問題を突き止めました。

というラベルが付いています。[ここにあなたの番号]以上のリンクが含まれている場合は、コメントをキューに入れてください。 (コメントスパムの一般的な特徴は、多数のハイパーリンクです。)設定 - > Wordpressバックエンドでのディスカッション。スクリーンショット

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でコメントを追加するための基本的なリンクカウントインターフェースを提供します。 Johnが提案したことに加えて、私は新しいコメントが実際に追加されたときにだけこれを実行させたかったので、コメントを追加することによって引き起こされたフックのトレースに基づく変更/追加を行いました。

そこで私はcomment_textフックの代わりにpre_comment_contentを選びました。それ以外は基本的に同じですが、いくつかの健全性チェックが追加されたため、一度だけ実行され、新しいコメントのみが追加されます。追加の(しかし現在は実装されていない)チェックはcomment_max_linksオプションがget_option()pre_option_comment_max_linksフック)によって読み込まれた後でのみ有効にすることですが、今のところテストに合格したので、私は今のところそれを行いません。

ソースコードはtrac でオンラインで見ることができます。

私は彼が最初にここで同じ原則を掲示したので彼の提案を選ばなかったとしても私はジョンに答えをあげる。

1
hakre