Come convalidare un campo URL dei social media nel vostro modulo

Introduzione

Volete convalidare un URL di social media nel vostro modulo? Per lo scopo di questa documentazione, permetteremo all'utente di inserire un URL di Twitter e un URL di Facebook, ma vogliamo avere la possibilità di convalidare gli URL dei social media prima che il modulo venga inviato; per farlo, utilizzeremo PHP. In questo tutorial, vi illustreremo i passaggi per raggiungere questo obiettivo.

Creazione del modulo

Per prima cosa, è necessario creare il modulo. Il nostro modulo includerà due campi sito web/URL. Uno sarà per un URL di follow di Twitter e l'altro per un URL di follow di Facebook.

Se avete bisogno di aiuto per creare il vostro modulo, consultate questa documentazione.

aggiungete il campo Sito web/URL per consentire agli utenti di inserire l'url dei social network

Aggiunta dello snippet

Ora che avete aggiunto i campi, è il momento di aggiungere al vostro sito lo snippet di codice che convaliderà l'URL di un social media nel vostro modulo.

Se non sapete come o dove aggiungere gli snippet al vostro sito, consultate questo 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 );

Nello snippet di codice qui sopra, utilizziamo questo snippet solo sull'ID 902 del modulo e solo sul campo ID 25, che è il campo URL di Facebook, e sul campo 26, che è il campo URL di Twitter.

Quando gli utenti inseriscono un link in quei campi che non corrispondono a quanto elencato nel nostro frammento di codice qui sopra, vedranno un errore dopo aver inviato il modulo.

È necessario aggiornare gli ID dei moduli e dei campi in modo che corrispondano a quelli presenti sul sito. Se avete bisogno di aiuto per trovare questi ID, consultate questo tutorial.

Con l'aggiunta di questo snippet è possibile convalidare facilmente l'URL di un social media all'interno del proprio modulo

Ed ecco fatto! Siete riusciti a convalidare un URL di social media. Volete che gli utenti effettuino automaticamente il login una volta completato il modulo di registrazione? Date un'occhiata al nostro articolo su Come registrare automaticamente gli utenti dopo la registrazione.

Riferimento azione: wpforms_process

FAQ

D: Posso aggiungere LinkedIn a questo frammento?

R: Assolutamente sì! Per aggiungere lo snippet di cui sopra per LinkedIn, utilizzate questo snippet e aggiornate gli ID del modulo e del campo per il modulo che state utilizzando.

/**
 * 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 );