mercredi 12 novembre 2014

WordPress : Filtrer les commentaires en amont pour éviter le spam

Si vous utilisez les commentaires sur votre site tournant sous WordPress, vous avez sûrement déjà été confronté aux commentaires indésirables.
Ces commentaires sont la plupart du temps envoyés par des robots nous ventant la qualité de leurs pilules amaigrissantes ou revigorantes, de leurs sacs à mains ou autres montres de grandes marques... bref, ces commentaires n'ont rien à faire sur votre site !
WordPress : Filtrer les commentaires en amont pour éviter le spam
Voici un petit bout de code PHP à placer dans le fichier functions.php de votre thème qui va "pré-filtrer" les commentaires postés sur votre site afin de vérifier si il s'agit ou non d'un spam.

Les spammeurs utilisent souvent une URL comme nom d'utilisateur. Le petit bout de code ci-dessous va vérifier la longueur du nom d'utilisateur afin de vérifier s'il s'agit d'une potentielle URL. Si c'est le cas, le commentaire sera classé automatiquement dans les spams.

Voici le le code à intégrer :

add_filter( 'pre_comment_approved', 'am_check_spam_comment', 99, 2 );
function am_check_spam_comment( $approved, $commentdata ) {
    return ( strlen( $commentdata['comment_author'] ) > 75 ) ? 'spam' : $approved;
}


Dans l'exemple ci-dessus, on vérifie si le nom d'utilisateur dépasse les 75 caractères, si c'est le cas, direction les spams.
Vous pouvez, bien évidemment, modifier ce code afin de filtrer les commentaires selon un nombre de caractères différent.

Ce code est inspiré par la fonction de norcross, qui se base sur la longueur de l'URL fournie par l'auteur du commentaire : https://gist.github.com/norcross/5468979

Il ne s'agit pas là d'une solution miracle, mais cela peut constituer une aide bien appréciable.

vendredi 7 novembre 2014

WordPress : Encoder son adresse mail pour éviter le spam

Voici une petite astuce qui vous permettra d'afficher votre adresse mail sur votre site internet tournant sous WordPress sans craindre de vous faire spammer.

Il vous suffit de placer dans votre thème le code PHP ci-dessous :

<?php

echo antispambot( 'john.doe@mysite.com' );

?>


Votre adresse mail sera encodée dans le code source de votre site mais sera bien affichée par les navigateurs.
Voici à quoi ressemblera votre adresse mail dans le code source de votre page :

jo&#104;&#110;&#46;&#100;&#111;&#101;&#64;&#109;&#121;s&#105;&#116;&#101;&#46;&#99;&#111;m

Si vous souhaitez l'intégrer dans un lien mailto:vous pouvez utiliser le code ci-dessous:

<a href="mailto:<?php echo antispambot( 'john.doe@mysite.com' ); ?>"><?php echo antispambot( 'john.doe@mysite.com' ); ?></a>

Ce bout de code est à placer à l'endroit où vous souhaitez faire apparaître votre adresse mail.

N'oubliez pas de remplacer john.doe@mysite.com par votre adresse mail !

Pour en savoir plus sur cette fonction, je vous conseille de faire un tour sur le Codex de WordPress :

http://codex.wordpress.org/Function_Reference/antispambot