web-dev-qa-db-fra.com

Nombre de liens externes dans les commentaires - Option de modération

J'ai juste rencontré un problème pour utiliser correctement le nombre de liens externes (signifiant aucun lien relatif ou absolu vers mon propre blog) sur mon blog pour l'option Comment Moderation count.

Il est étiqueté Maintient un commentaire dans la file d'attente s'il contient [votre numéro ici] ou plusieurs liens. (Une caractéristique commune du spam de commentaires est un grand nombre de liens hypertexte.) dans Paramètres -> Discussion dans le back-end Wordpress. Capture d'écran:

alt text

Je suis conscient qu'actuellement, tous les liens sont inclus. des liens vers le blog et d'autres commentaires (rapportés ici: # 14681 ) mais je ne peux pas imaginer qu'il n'y ait pas de plugin ou de hack déjà disponible cela corrige correctement le compte uniquement sur les liens externes.

Ma question est donc la suivante: existe-t-il un plugin/hack permettant à Wordpress de ne compter correctement que les liens externes dans les commentaires pour ses options de modération?

3
hakre

Haha, j'ai en fait trouvé un moyen de faire cela. En tant que plugin, cela devrait fonctionner.

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

Je devrais ajouter que je n'ai en aucun cas testé cela. Mais cela devrait théoriquement fonctionner.

1
John P Bloch

J'ai maintenant écrit un plugin complet qui offre l'interface de comptage de liens de base pour l'ajout de commentaires avec wordpress 3.0. En plus de ce que John a proposé, j'ai apporté des modifications/ajouts basés sur le traçage des crochets déclenchés par l'ajout du commentaire car je voulais que cela soit exécuté uniquement lorsqu'un nouveau commentaire est ajouté.

J'ai donc choisi le comment_text au lieu du crochet pre_comment_content. Le reste est fondamentalement identique, mais certains contrôles de cohérence ont été ajoutés pour qu'il ne soit exécuté qu'une seule fois et qu'un nouveau commentaire soit ajouté. Une vérification supplémentaire (mais pas encore implémentée) serait de l'activer uniquement après que l'option comment_max_links ait été lue par get_option() (le pre_option_comment_max_links- hook), mais pour l'instant, cela a réussi les tests, je ne l'ai pas encore fait.

Le code source peut être consulté en ligne dans trac .

Je vais donner la réponse à John même si je n'ai pas choisi sa suggestion car il a posté le même principe ici en premier.

1
hakre