Tutoriales

Borrar de forma automática los comentarios marcados como spam en WordPress

El otro día llegué a un cliente y chequeando su web, me di cuenta que tenía decenas de comentarios marcados como spam. Tenía un plugin para filtrar el spam que llegaba al blog en forma de comentarios y funcionaba bien, pero claro, los comentarios se quedaban ahí, bien clasificados pero ocupando sitio.

¿Qué problema tiene dejar decenas de miles de comentarios en la base de datos? En algún sitio he llegado a ver cientos de miles. Pues aunque no afecta mucho al desempeño de la web en muchas cosas, porque no es una tabla tan accedida como puedan ser la tabla de opciones o las tablas post/postmeta, sí que tiene ciertos problemas:

  • Afecta a la velocidad de la web en las vistas que tiran de comentarios: blog, en la página de los productos de WooCommerce que tienen valoraciones y en general en el back en muchas partes porque los comentarios aparecen hasta en un widget de la entrada
  • Hacen enorme las copias de seguridad, eso es un problema porque se alarga mucho la creación de las copias y su posterior recuperación si es necesario
  • La web ocupa más sitio, realmente su base de datos, pero en alojamientos con poco espacio es un problema

Así que bueno, estuve viendo diferentes opciones pero al final me decanté por un pequeño código a medida que borrara todos los comentarios marcados como spam. Hay plugins que lo hacen pero montar un plugin para una labor tan pequeña no tiene sentido.

Y es que como siempre digo:

  • Para acciones concretas, usando los métodos correctos de la API y donde no hay hueco para la mejora, mejor usar códigos a medida sencillos
  • Para todo lo demás, mejor usar plugins, para aprovecharte no solo del know-how del que lo hace si no de las actualizaciones y mejoras, como por ejemplo un plugin de pasarela de pago para WooCommerce

Código para borrar comentarios spam automáticamente

Os dejo el código y ahora comentamos:

add_action( 'wp_scheduled_delete', function() {
    global $wpdb;
    $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'");
} );

Empezamos por lo primero. Si os fijáis hago uso del hook wp_scheduled_delete. Este hook está asociado a un evento que el core ejecuta una vez al día. Es el hook que usa WordPress para eliminar cosas que llevan mucho tiempo en la papelera. Nosotros no unimos a él porque es buena la frecuencia, una vez al día; y porque su acción está relacionada con lo que queremos conseguir.

A esa acción asociamos la ejecución de un pequeño código SQL, que básicamente borra todos los comentarios que estén calificados como spam.

Y es que esa columna comment_approved antes era booleana pero con el tiempo ha ido cogiendo más posibles significados y ahora fijaros todo lo que puede contener:

En la base de datos de WordPress, la columna comment_approved en la tabla wp_comments puede tener los siguientes valores:

  • 0 → Comentario pendiente de moderación (aún no aprobado).
  • 1 → Comentario aprobado y visible en la web.
  • spam → Comentario marcado como spam.
  • trash → Comentario enviado a la papelera.
  • post-trash → Comentario asociado a una publicación que ha sido eliminada.

Así que nada espero haberos ayudado a resolver este pequeño gran problema que algunos tienen por culpa de todo el spam que llega en Internet.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

¿Por qué falla Bizum en WooCommerce? 9 causas

Por qué falla Bizum WooCommerce: detecta errores de credenciales, firma, entorno y pedidos para recuperar…

hace % días

Plugin gratuito Redsys WordPress: qué revisar

Elige un plugin gratuito Redsys WordPress con criterio: compatibilidad, seguridad, configuración bancaria y límites para…

hace % días

Qué necesito para activar CECA Online en mi web

¿Qué necesito para activar CECA Online? Revisa contrato bancario, datos del terminal, seguridad, pruebas y…

hace % días

Cómo elegir una pasarela para suscripciones

Aprende a elegir una pasarela para suscripciones en WordPress: revisa recurrencia, compatibilidad, seguridad y soporte…

hace % días

Plugin Bizum WordPress para cobrar con control

Elige un plugin Bizum WordPress compatible con tu flujo de venta, configura la pasarela bancaria…

hace % días

Cómo aceptar CECA en reservas de WordPress

Aprende cómo aceptar CECA en reservas WordPress, configurar pagos seguros y confirmar cada reserva sin…

hace % días