Los filtros de WordPress para controlar el spam (akismet) en los comentarios son muy efectivos y teniendolos medianamente bien configurados funcionan a la perfección, pero tienen un problema: no eliminan los mensajes sino que los pasan a «moderación». Mas tarde el administrador del sitio (en este caso yo mismo) debe borrarlos a mano (tras comprobar que el comentario es efectivamente spam).

Desde hace una temporada, todos los dias, lo primero que hago hacía por las mañanas al conectarme es borrar los 3-4 comentarios diarios de spam del area de administración. Nada del otro mundo, pero bastante cansado para un tipo aburrido como yo (ó era al reves¿?).
Me propuse fervientemente idear algún sistema que me permitiese seguir haciendo nada mientras me tomo el café, veamos ¿que diferencia un comentario escrito por un bots del escrito por una persona?

Facil ¿no?: Los comentarios escritos por un bot (ro-bot informático) son escritos sin pulsar el teclado. Pues ya tienes la solución: bastaría con decirle a WordPress que directamente ignore aquellos comentarios cuyo numero de pulsaciones en el cajón de texto sea menor de 1 (p. ejem). Los que sepais de Javascript ya os imaginais el resto. A continuación las modificaciones que hay que hacer en 2 ficheros PHP de WordPress para olvidarte de la moderación en los comentarios.

Modificar el fichero de comentarios

En la carpeta del tema en uso de WordPress tienes un fichero llamado «comments.php«, editalo y hacia el final verás el formulario que se le presenta a tus visitas para que dejen sus comentarios.
Algo como esto (linea 93) :<p>
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>
</p>
<p>
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>

Lo que haremos es introducir un nuevo input oculto que aumente su valor por cada pulsación de teclas en el cajón de texto ( textarea ). Para eso situate antes del input name = comment_post_ID y añade:<input type="hidden" name="pulsaciones" value=0 />
A continuación modificamos el textarea en introducimos un javascript que aumente el valor de este campo, dejandolo así:<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" onkeydown=pulsaciones.value=eval(pulsaciones.value)+1;> </textarea>
Listo, cada vez que una tecla sea pulsada, el campo name=pulsaciones aumenta su valor en 1 unidad. En conjunto queda así:<p>
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" onkeydown=pulsaciones.value=eval(pulsaciones.value)+1;> </textarea>
</p>
<p>
<input name="submit" type="submit" id="submit" tabindex="5" value="Enviar" />
<input type="hidden" name="pulsaciones" value=0 />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>

Modificar la función de comentarios
Pues bien, ahora solo falta filtrar y continuar si el campo «pulsaciones» es mayor de 1. En la carpeta raiz donde tengas instalado WordPress tendrás un fichero llamado wp-comments-post.php, editalo añadiendo la lineas situadas entre «nueva linea START» y «nueva linea END», a la altura del renglon 27 $comment_author = trim($_POST['author']);
$comment_author_email = trim($_POST['email']);
$comment_author_url = trim($_POST['url']);
$comment_content = trim($_POST['comment']);
// nueva linea START
$comment_pulsa = trim($_POST['pulsaciones']);
if( '' == $comment_pulsa || $comment_pulsa < 3 ){
header("Location: http://www.hazteoir.org");
exit;}
//nueva linea END

Hecho. En adelante tu trabajo como moderador de spam se verá muy notablemente reducido. Al menos en mi caso, desde que activé este sistema no he tenido que borrar ni un solo mensaje de spambots, con lo que además puedo desactivar el plugin Akismet y aligerar el sistema.

Observaciones:
– Evidentemente esto no detiene el span «manual». La estupidez humana no tiene cura, ó como dice Murphy «Nunca diseñes a prueba de estupidos, los estupidos son muy ingeniosos!«
– Existe otra modalidad de spambots que NO usa los formularios para hacer comentarios. Son (afortunadamente) bastante más raros y dificiles de parar.
– Ojo con lo que haces si no tienes ni idea de PHP ó HTML, puedes inutilizar el sistema de comentarios. Haz siempre copia de seguridad de los ficheros modificados.

Problemas
– El principal problema es que sí el «filtro» dá un falso positivo no hay manera de enterarse. Si alguno observa algo raro, ó simplemente no le deja comentar que lo comunique…. por email
– Teoricamente el sistema impediría tambien hacer COPY-PASTE en los comentarios sin escribir nada… pero esto no tengo claro que sea un «problema»!! :D