it-swarm-eu.dev

Počet externích odkazů v komentářích - možnost moderování

Právě jsem běžel přes problém správně používat počet externích (což znamená žádné relativní nebo absolutní odkazy na můj vlastní blog) odkazy na mém blogu pro Komentář Moderace počet Možnost.

Je to označeno Pokud obsahuje frontu [vaše číslo zde] nebo více odkazů, přidržte komentář ve frontě. (Společnou charakteristikou komentáře spam je velké množství hypertextových odkazů.) na Nastavení -> Diskuse v Wordpress Back-end. Snímek obrazovky:

alt text

Vím, že v současné době počítá všechny odkazy inkl. odkazy na blog a další komentáře (hlášeny zde: # 14681 ), ale nemohu si představit, že již není k dispozici plugin nebo hack řádně opraví počet pouze na externí odkazy.

Takže moje otázka je: Existuje plugin/hack, který dělá Wordpress správně počítat pouze externí odkazy v komentářích je to moderování možnosti?

3
hakre

Haha, vlastně jsem přišel na způsob, jak to udělat. Jako plugin by to mělo fungovat.

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

Chtěl bych dodat, že jsem to nijak netestoval. Ale mělo by to teoreticky fungovat.

1
John P Bloch

Nyní jsem napsal kompletní plugin , který nabízí základní rozhraní pro počítání odkazů pro přidávání komentářů s aplikací wordpress 3.0. Kromě toho, co John navrhl jsem udělal nějaké změny/přidávání založené na sledování háčků spuštěných přidáním komentář, jak jsem chtěl, aby to bylo provedeno, pouze když je přidán nový komentář.

Proto jsem zvolil comment_text místo háku pre_comment_content. Zbytek je v podstatě stejný, ale některé kontroly zdravého rozumu byly přidány tak, že se dostanou pouze jednou a po přidání nového komentáře. Další (ale v současné době neimplementovaná) kontrola by bylo umožnit ji pouze po přečtení volby comment_max_links pomocí get_option() (pre_option_comment_max_links- hook), ale jak to v tuto chvíli prošlo testováním, tak jsem to zatím neudělala.

Zdrojový kód lze zobrazit online v trac .

Já dám odpověď Johnovi, i když jsem si nevybral jeho návrh, protože zde přednesl stejný princip.

1
hakre