Introductioon
Do you want to validate a social media URL in your form? For the purpose of this documentation, we’re going to allow the user to enter a Twitter URL and a Facebook URL but we want the ability to validate the social media URLs before the form is submitted, in order to do this we’ll use PHP. In this tutorial, we’re going to walk you through the steps on how to achieve this.
Creating the form
First, you’ll need to create your form. Our form will include two Website / URL fields. One will be for a Twitter follow URL and the other for a Facebook follow URL.
If you need any help in creating your form, please review this documentation.
Adding the snippet
Now that you’ve added the fields, it’s time to add the code snippet to your site that will validate a social media URL in your form.
If you’re not sure how or where to add snippets to your site, please check out this 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 );
In the code snippet above, we’re only using this snippet on the form ID 902 and only on field ID 25 which is the Facebook URL field and field 26 which is the Twitter URL field.
When the users enter a link in those fields that do not match what is listed in our code snippet above, they will see an error after they’ve submitted the form.
You’ll need to update the form and field IDs to match what you have on your site. If you need help in finding these IDs, please take a look at this tutorial.
And that’s it! You’ve successfully been able to validate a social media URL. Would you like to also have the users automatically log in once they’ve completed the registration form? Take a look at our article on How to Automatically Log in Users After Registration.
Related
Action Reference: wpforms_process
FAQ
Q: Can I add LinkedIn to this snippet?
A: Absolutely! To add to the above snippet for LinkedIn, use this snippet and update the form and field IDs for the form you’re using.
/** * 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 );