Eliminar comentarios que contengan palabras prohibidas

AVISO IMPORTANTE

Este artículo tiene más de dos años, así que su contenido podría no funcionar con tu versión de WordPress o con la versión actual.
Por favor, haz una copia de seguridad y comprueba que todo funciona correctamente antes de hacer los cambios definitivos en tu web.

Cómo podemos eliminar comentarios que contengan palabras prohibidas

En esta ocasión aprenderemos a eliminar comentarios que contengan palabras prohibidas establecidas por nosotros mismos.

Ya sabemos que WordPress tiene incluido un filtro de palabras que incluye palabras, url’s e ip’s. El problema de este filtro nativo de WordPress es que, cuando se detecta una palabra prohibida, envía el comentario a spam o lo deja pendiente para moderación, no se elimina.

Si por el contrario, lo que quieres es eliminarlo directamente sin que tu tengas que intervenir, tendrás que usar un código parecido a este que te muestro a continuación.

Código que vamos a utilizar

Este código es un poco complejo, así que te recomiendo copiar y pegar tal como está.

function in_comment_post_like($string, $array) {
foreach($array as $ref) {
if(strstr($string, $ref)) {
return true;
}
}
return false;
}
function drop_bad_comments() {
if (!empty($_POST['comment'])) {
$post_comment_content = $_POST['comment'];
$lower_case_comment = strtolower($_POST['comment']);
$bad_comment_content = array( 'cialis', 'sexy girl', 'lose weigh', '[url=http', '[link=http',
'xanax', 'tramadol', 'russian girls', 'russian brides', 'lorazepam', 'adderall', 'dexadrine',
'no prescription', 'oxycontin', 'without a prescription', 'sex pics', 'dildo',
'online casinos', 'online dating', 'viagra', 'best forex', 'amoxicillin' );
if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
$comment_box_text = wordwrap(trim($post_comment_content), 80, "n ", true);
$txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a');
fwrite($txtdrop, " --------------n [COMMENT] = " . $post_comment_content . "n --------------n");
fwrite($txtdrop, " [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "n");
fwrite($txtdrop, " [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "n");
fwrite($txtdrop, " [REFERER ] = " . $_SERVER['HTTP_REFERER'] . "n");
fwrite($txtdrop, " [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "n");
fwrite($txtdrop, '--------------**********------------------'."n");
header("HTTP/1.1 406 Not Acceptable");
header("Status: 406 Not Acceptable");
header("Connection: Close");
wp_die( __('bang bang.') );
}
}
}
add_action('init', 'drop_bad_comments');

¿Y cómo puede añadir tus propias palabras prohibidas?, muy sencillo, sólo tienes que añadirlas (o quitarlas), en la línea $bad_comment_content.

Donde colocamos este código

Si eres seguidor del blog ya sabrás que podemos colocarlo en tres sitios distintos:

  • En tu plugin de funciones. Método también recomendable.
  • Insertando el código en el functions.php de tu tema activo. No recomendable a no ser que tengas un child theme.
  • En tu plugin de snippets. Ya sabrás que este es el método que personalmente te aconsejo.

Puede que también te interese...

Deja una respuesta

Información básica sobre protección de datos
Responsable: Jose González Bueno.
Finalidad: Moderación y publicación de comentarios.
Destinatarios: No se comunican datos a terceros, salvo por imperativo legal.
Derechos: Tienes derecho a acceder, rectificar, exportar y suprimir tus datos.

Tu dirección de correo electrónico no será publicada.

He leído y acepto la política de privacidad de este sitio. *