Seguramente te has planteado impedir los enlaces en los comentarios de WordPress, ya sea en el blog u otro tipo de publicaciones, dado que en su gran mayoría se usan para dejar spam y enlaces a sitios sin ningún valor o promocionar productos que nada que ver con el sitio.
Aquí veremos como configurar los comentarios para moderar los que contengan enlaces, pero lo más importante, aprenderás a impedir mediante un fragmento de código que los visitantes o bots envíen a tu sitio comentarios con link, desincentivando así a los Spammers.
Desde luego hay que recordar que los comentarios tanto en un blog como en una red social son extremadamente importantes y nunca se debería pensar en eliminarlos por completo, por ello aquí contemplamos la posibilidad de moderarlos en vez de eliminarlos.
Configuración de WordPress para impedir que se publiquen comentarios con enlace
WordPress por defecto permite moderar los comentarios que contengan enlaces o incluso revisar todos los comentarios antes de que sean publicados. Enseguida te explicaré como hacerlo, sin embargo, esta opción resulta molesta porque necesitas ingresar a diario a verificar, aprobar y borrar todos los que contienen enlaces de spam. Esta opción demás de que genera trabajo tienen el problema que no desincentiva los Spammers que por lo general son los mismos. La en la opción final aprenderás como impedir que el usuario envíe comentarios con enlaces.
Si tienes permitido en tu sitio que los comentarios se publiquen automáticamente, pero deseas que los que contengan enlaces queden en espera de revisión, lo que necesitas es ir a la barra lateral en Ajustes/Comentarios/Moderación de comentarios/ y en la casilla reemplazar el número por «0«.
Como bloquear comentarios con enlaces en WordPress
Ahora si vamos a hacer algo profesional. Mediante un fragmento de código vamos a impedir que los usuarios dejen enlaces en los comentarios de WordPress, es decir, que no puedan enviar el comentario si este contiene un enlace y que además vean el motivo por el cual no pudieron enviar el comentario para que si quieren comentar deban quitar enlace.
Necesitamos agregar un fragmento de código al archivo functions.php de nuestro tema de WordPress; sin embargo, no es recomendable agregarlo directamente en los archivos del team porque si cambios de tema estos cambios se perderán. Para agregar fragmentos al functions.php te recomiendo que instales el plugin Code Snipeds si es que aún no lo tienes. Una vez instalado el complemento vas lo encuentras en el menú lateral del administrador, haz clic en Fragmentos de código/Añadir nuevo y pega el siguiente código:
Nota. Si quieres ver como funciona antes de agregarlo a tu sitio, intenta enviar un comentario que contenga un enlace aquí abajo en este post.
// =====================================================================
// Elimina enlaces clicables en comentarios, por Drunel Labs (https://drunel.com)
// Creado el 18 de julio de 2024
// =====================================================================
remove_filter('comment_text', 'make_clickable', 9);
// Cargar SweetAlert2 desde un CDN
function enqueue_sweetalert2() {
wp_enqueue_script('sweetalert2', 'https://cdn.jsdelivr.net/npm/sweetalert2@11', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'enqueue_sweetalert2');
// Añade un script de validación de comentarios en el frontend usando SweetAlert2
function disallow_links_in_comments_script() {
?>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var commentForm = document.getElementById('commentform');
if (commentForm) {
commentForm.onsubmit = function(event) {
var comment = document.getElementById('comment').value;
var urlPattern = /(https?:\/\/[^\s]+)/g;
if (urlPattern.test(comment)) {
event.preventDefault();
Swal.fire({
title: 'Comentario no enviado',
text: 'Está prohibido poner enlaces en los comentarios.',
icon: 'error',
confirmButtonText: 'Entendido'
});
}
}
}
});
</script>
<?php
}
add_action('wp_footer', 'disallow_links_in_comments_script');
// Añade una validación de comentarios en el backend
function disallow_links_in_comments_backend($commentdata) {
$urlPattern = '/(https?:\/\/[^\s]+)/';
if (preg_match($urlPattern, $commentdata['comment_content'])) {
wp_die(
'Error: Upss, no esta permitido pegar enlaces en los comentarios.',
'Comentario bloqueado',
array('back_link' => true)
);
}
return $commentdata;
}
add_filter('preprocess_comment', 'disallow_links_in_comments_backend');
Prueba el bloqueo de comentarios con URL
Ahora lo único que falta es probarlo. Ve a una pestaña de incógnito e intenta agregar un comentario que contenga una URL. Ahora te redirigirá a una página blanca mostrando una advertencia de que no están permitidos los enlaces en los comentarios, esta contiene un enlace para regresar a los comentarios del post sin que se actualice la página. Adiós al spam si todo salió bien.
Si quieres personalizar el mensaje en pantalla puedes modificar la línea 42.
¿Te gustaría potenciar tu web o tienda online para vender más? Déjalo en manos de expertos en E-commerce y SEO. Conoce los servicios de Drunel Labs.