¡Atención!

Este artículo contiene código PHP y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Cómo bloquear dominios desde tus campos de texto

¿Interesado en mejorar la seguridad de tus formularios web? Con un simple fragmento de PHP, puedes bloquear eficazmente los envíos de dominios específicos directamente desde el campo de texto de tu formulario. En este tutorial, te guiaremos a través del proceso paso a paso para implementar esta función, asegurando que tus formularios permanezcan protegidos contra spam y envíos maliciosos.

Creación del formulario

Comenzaremos creando un nuevo formulario. Nuestro formulario es simplemente un formulario de contacto donde les pediremos su nombre, correo electrónico y cualquier comentario adicional que deseen añadir.

Para nuestro formulario de ejemplo, añadiremos los campos de formulario Nombre, Correo electrónico, Texto de párrafo y el CAPTCHA personalizado (para seguridad adicional).

comience creando su formulario y agregando sus campos

Si necesitas ayuda, por favor consulta nuestra útil guía sobre cómo crear un nuevo formulario.

Bloqueo de dominios

Ahora es el momento de añadir nuestros fragmentos. Para cualquier ayuda sobre cómo y dónde añadir fragmentos, por favor revisa este tutorial.

Campo de texto de párrafo

/**
 * Block domains inside the Paragraph Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_textarea( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_textarea' , 'wpf_dev_prevent_domains_textarea', 10, 3 );

Este fragmento buscará dentro del campo de formulario Texto de párrafo cualquier combinación de las palabras mostradas dentro de preg_match y bloqueará el envío del formulario si es verdadero.

si el campo de comentarios contuviera algún tipo de nombre de dominio, el formulario no se enviará

Campo de texto de una sola línea

Puedes usar la misma funcionalidad para el campo Texto de una sola línea con la misma facilidad. El fragmento será casi idéntico con la excepción del nombre del filtro.

/**
 * Block domains inside the Single Line Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_text( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_text' , 'wpf_dev_prevent_domains_text', 10, 3 );

¡Y eso es todo lo que necesitas! ¿También te gustaría bloquear cualquier grosería en estos campos? Consulta nuestro tutorial sobre Cómo bloquear envíos de formularios que contienen groserías.

Acciones de Referencia

Preguntas frecuentes

P: ¿Puedo usar esto en el campo de formulario de texto enriquecido?

R: ¡Absolutamente! Aquí tienes el fragmento para el campo de formulario Texto enriquecido.

/**
 * Block domains inside the Rich Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_richtext( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_richtext' , 'wpf_dev_prevent_domains_richtext', 10, 3 );

P: ¿Cómo puedo aplicar esto a otros campos?

R: Casi todos los campos tienen algún tipo de validación. La mayoría de los campos usarán do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Simplemente reemplazarías _{$field_type} con el tipo de campo.