Cómo validar un campo de URL de redes sociales en un formulario

Introducción

¿Quieres validar una URL de una red social en tu formulario? Para el propósito de esta documentación, vamos a permitir que el usuario introduzca una URL de Twitter y una URL de Facebook, pero queremos la capacidad de validar las URL de los medios sociales antes de que se envíe el formulario, con el fin de hacer esto vamos a utilizar PHP. En este tutorial, vamos a caminar a través de los pasos sobre cómo lograr esto.

Creación del formulario

En primer lugar, tendrá que crear su formulario. Nuestro formulario incluirá dos campos Sitio web / URL. Uno será para una URL de seguimiento de Twitter y el otro para una URL de seguimiento de Facebook.

Si necesita ayuda para crear su formulario, consulte esta documentación.

añada el campo Sitio web / URL para que sus usuarios introduzcan la URL de sus redes sociales

Añadir el fragmento

Ahora que has añadido los campos, es el momento de añadir el fragmento de código a tu sitio que validará una URL de redes sociales en tu formulario.

Si no está seguro de cómo o dónde añadir fragmentos a su sitio, consulte este tutorial.

/**
 * Confirm the correct social network link in the form.
 *
 * @link   https://wpforms.com/developers/how-to-validate-a-social-media-url-field-in-your-form/
 */

function wpf_dev_process_check_social_url( $fields, $entry, $form_data ) {
      
    // Optional, you can limit to specific forms. Below, we restrict output to
    // form #902.
    if ( absint( $form_data['id'] ) !== 902 ) {
        return $fields;
    }
    
	
	$fb_url = $fields[25][ 'value' ];
	$findfb   = 'facebook.com';
	$find_fb_url = strpos($fb_url, $findfb);

	if ($find_fb_url === false) {
            // Check the field ID 25 to make sure it contains facebook.com
               wpforms()->process->errors[ $form_data[ 'id' ] ] [ '25' ] = esc_html__( 'Please enter a valid Facebook Profile URL.', 'plugin-domain' );
  
        }
	
	$twitter_url = $fields[26][ 'value' ];
	$findtwitter   = 'twitter.com';
	$find_twitter_url = strpos($twitter_url, $findtwitter);

	if ($find_twitter_url === false) {

            // Check the field ID 26 to make sure it contains twitter.com
               wpforms()->process->errors[ $form_data[ 'id' ] ] [ '26' ] = esc_html__( 'Please enter a valid Twitter Profile URL.', 'plugin-domain' );
  
        }
	
    }
add_action( 'wpforms_process', 'wpf_dev_process_check_social_url', 10, 3 );

En el fragmento de código anterior, sólo estamos utilizando este fragmento en el formulario ID 902 y sólo en el campo ID 25 que es el campo URL de Facebook y el campo 26 que es el campo URL de Twitter.

Cuando los usuarios introducen un enlace en esos campos que no coincide con lo que aparece en nuestro fragmento de código anterior, verán un error después de haber enviado el formulario.

Tendrá que actualizar los ID de formulario y de campo para que coincidan con los que tiene en su sitio. Si necesitas ayuda para encontrar estos IDs, por favor echa un vistazo a este tutorial.

con este fragmento añadido puede validar fácilmente una URL de medios sociales dentro de su formulario

Y ya está. Has conseguido validar la URL de una red social. ¿Le gustaría también que los usuarios inicien sesión automáticamente una vez que hayan completado el formulario de registro? Eche un vistazo a nuestro artículo sobre Cómo iniciar sesión automáticamente después de registrarse.

Acción Referencia: wpforms_process

PREGUNTAS FRECUENTES

P: ¿Puedo añadir LinkedIn a este fragmento?

R: ¡Por supuesto! Para añadir al fragmento anterior para LinkedIn, utilice este fragmento y actualice los ID de formulario y de campo para el formulario que esté utilizando.

/**
 * Confirm the correct social network link in the form.
 *
 * @link   https://wpforms.com/developers/how-to-validate-a-social-media-url-field-in-your-form/
 */

function wpf_dev_process_check_social_url( $fields, $entry, $form_data ) {
      
    // Optional, you can limit to specific forms. Below, we restrict output to
    // form #902.
    if ( absint( $form_data['id'] ) !== 902 ) {
        return $fields;
    }
    
	
	$fb_url = $fields[25][ 'value' ];
	$findfb   = 'facebook.com';
	$find_fb_url = strpos($fb_url, $findfb);

	if ($find_fb_url === false) {
            // Check the field ID 25 to make sure it contains facebook.com
               wpforms()->process->errors[ $form_data[ 'id' ] ] [ '25' ] = esc_html__( 'Please enter a valid Facebook Profile URL.', 'plugin-domain' );
  
        }
	
	$twitter_url = $fields[26][ 'value' ];
	$findtwitter   = 'twitter.com';
	$find_twitter_url = strpos($twitter_url, $findtwitter);

	if ($find_twitter_url === false) {

            // Check the field ID 26 to make sure it contains twitter.com
               wpforms()->process->errors[ $form_data[ 'id' ] ] [ '26' ] = esc_html__( 'Please enter a valid Twitter Profile URL.', 'plugin-domain' );
  
        }

	$linkedin_url = $fields[27][ 'value' ];
	$findlinkedin   = 'linkedin.com';
	$find_linkedin_url = strpos($linkedin_url, $findlinkedin);

	if ($find_linkedin_url === false) {

            // Check the field ID 27 to make sure it contains linkedin.com
               wpforms()->process->errors[ $form_data[ 'id' ] ] [ '27' ] = esc_html__( 'Please enter a valid LinkedIn Profile URL.', 'plugin-domain' );
  
        }
	
    }
add_action( 'wpforms_process', 'wpf_dev_process_check_social_url', 10, 3 );