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.