it-swarm-pt.tech

Número de Links Externos em Comentários - Opção de Moderação

Acabei de atropelar um problema para usar corretamente a contagem de links externos (ou seja, sem links relativos ou absolutos para o meu próprio blog) no meu blog para a Opção de contagem de moderação de comentários .

É rotulado Mantenha um comentário na fila se contiver [seu número aqui] ou mais links. (Uma característica comum do spam de comentários é um grande número de hiperlinks.) em Configurações -> Discussão no back-end do Wordpress. Captura de tela:

alt text

Estou ciente de que atualmente conta todos os links inkl. links para o blog e outros comentários (reportou aqui: # 14681 ) mas eu não posso imaginar que não há um plugin ou hack já disponível que corrige corretamente a contagem apenas para links externos.

Então, a minha pergunta é: Existe um plugin/hack que faz o Wordpress contar corretamente apenas os links externos nos comentários das opções de moderação?

3
hakre

Haha, eu realmente descobri uma maneira de fazer isso. Como um plugin, isso deve funcionar.

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

Devo acrescentar que não testei de forma alguma isso. Mas, teoricamente, isso deveria funcionar.

1
John P Bloch

Eu agora escrevi um plugin completo para isso que oferece a interface básica de contagem de links para adicionar comentários com o wordpress 3.0. Além do que John propôs, fiz algumas alterações/adições baseadas no rastreamento dos ganchos acionados pela adição do comentário, pois eu queria que isso fosse executado somente quando um novo comentário fosse realmente adicionado.

Por isso escolhi o comment_text em vez do pre_comment_content hook. O resto é basicamente o mesmo, mas algumas verificações de integridade foram adicionadas para que sejam executadas apenas uma vez e adicionadas apenas um novo comentário. Uma verificação adicional (mas atualmente não implementada) seria ativá-lo somente após a opção comment_max_links ter sido lida por get_option() (o pre_option_comment_max_links- hook), mas quanto ao momento em que isso passou no teste, eu não fiz isso até agora.

O código fonte pode ser visualizado online no trac .

Eu vou dar a resposta para John, mesmo que eu não tenha escolhido a sugestão dele, já que ele postou o mesmo princípio aqui primeiro.

1
hakre