Gravity Forms incluye su propio sistema antispam que, por cierto, es bastante eficiente. Sin embargo a veces tenemos necesidades que van más allá que puramente bloquear el spam, y necesitamos bloquear mensajes según otras condiciones: prohibir mensajes que contengan ciertas palabras, bloquear ciertos usuarios por email o dominios de email (por ejemplo, impedir que envíen mensajes los usuarios con emails gratuitos), etcétera.
Así que vamos a ver cómo podemos establecer una (o varias) listas negras para Gravity Forms, que impidan el envío de formularios en función de ciertas condiciones que establezcamos.
Tabla de contenidos
Crear listas negras para Gravity Forms
El objetivo de todo esto es impedir el envío de formularios mediante listas negras en Gravity Forms. Y se puede hacer; de varias formas además, en función de nuestras necesidades concretas.
Para empezar, disponemos del plugin gratuito BSK Gravity Forms Blacklist, que permite crear diferentes listas negras que podemos aplicar selectivamente a distintos formularios.
Algunos ejemplos de lo que esto nos permite serían:
- Bloquear los envíos que contengan enlaces (por ejemplo, bloqueando cualquier mensaje que contenga la cadena «http»)
- Bloquear según una lista de palabras «prohibidas»
- Bloquear según el contenido de diversos campos (un email concreto, un teléfono concreto, un nombre concreto…)
Crear listas negras y aplicarlas a formularios
Como el funcionamiento del plugin no es demasiado intuitivo (requiere primero generar las listas y después asignarlas a formularios) quedará mucho más claro si, en vez de explicarlo por escrito, ves cómo se hace en un vídeo:
Puedes traducir o personalizar el mensaje de error que muestra el plugin como explico en el artículo sobre cómo cambiar o traducir cualquier texto en WordPress, aunque no podrás establecer el mensaje de forma condicional: siempre se mostrará el mismo.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Bloquear formularios por dominio de email
Si no necesitas tanto y lo único que quieres es bloquear los envíos por email, tienes también disponible el plugin Gravity Forms Email Blacklist (también gratuito).
Este plugin bloquea los envíos según el email (siempre y cuando el formulario contenga un campo de tipo email), pudiendo establecer una y sólo una lista negra (en Formularios > Ajustes > Email Blacklist) que puede contener tanto emails concretos como dominios. También dispones de una opción para mostrar un mensaje de error personalizado.
Esto permitiría bloquear el envío de formularios desde direcciones de email gratuitas (bloqueando dominios como yahoo, gmail, hotmail, etc.) si sólo queremos dirigirnos a profesionales, o desde direcciones de la competencia, por sólo citar un par de ejemplos.
Bloquear emails gratuitos
El core de este plugin se basa en un código similar al que te pongo a continuación, que te permite bloquear el envío de formularios si se utiliza uno de los dominios del array $blacklist:
add_filter( 'gform_field_validation', function ( $resultado, $valor, $form, $campo ) { if ( $campo->get_input_type() === 'email' && $resultado['is_valid'] ) { $dominio = explode( '@', $valor ); $blacklist = array( 'gmail.com', 'yahoo.com', 'hotmail.com' ); if ( in_array( $dominio[1], $blacklist ) ) { $resultado['is_valid'] = false; $resultado['message'] = 'Por favor, introduce una dirección de correo válida'; } } return $resultado; }, 10, 4);
Así que, si sólo quieres bloquear unos pocos dominios concretos, te puedes ahorrar el plugin usando este código. Según está escrito aquí arriba bloquea todas las direcciones de correo de gmail.com, yahoo.com y hotmail.com, pero puedes añadir otros dominios (por ejemplo, hotmail.es) simplemente agregando elementos al array.
También, con unas mínimas modificaciones de código, te permitirá bloquear cualquier dominio territorial (usando la función substr o incluso bloquear direcciones de email concretas.
Nury dice
Hola, sabes como puedo evitar que un mismo usuario envié el mismo formulario dos veces?.. tengo un formulario que solo estoy mostrando a mis usuarios registrados, pero el formulario no debería poder repetirse ya que es una encuesta, hay alguna forma de validar ya sea el email para no que no puedan repetir el formulario?
Enrique J. Ros dice
Hola Nury
Echa un vistazo al plugin Gravity Perks con su add-on Limit Submissions, es posible que te sirva para lo que necesitas.
Un saludo