ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

フォームのソーシャルメディアURLフィールドを検証する方法

紹介

フォームでソーシャルメディアのURLを検証したいですか? このドキュメントでは、ユーザーがTwitterのURLとFacebookのURLを入力できるようにしますが、フォームが送信される前にソーシャルメディアのURLを検証する機能が必要になります。これを実現するためにPHPを使用します。このチュートリアルでは、これを達成する方法の手順を説明します。

フォームの作成

まず、フォームを作成する必要があります。フォームには2つのウェブサイト/URLフィールドが含まれます。1つはTwitterのフォローURL用、もう1つはFacebookのフォローURL用です。

フォームの作成にヘルプが必要な場合は、このドキュメントを確認してください

ユーザーがソーシャルメディアのURLを入力するためのウェブサイト/URLフィールドを追加する

スニペットの追加

フィールドを追加したら、フォームでソーシャルメディアのURLを検証するためのコードスニペットをサイトに追加する時間です。

スニペットをサイトに追加する方法や場所がわからない場合は、このチュートリアルを確認してください

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

上記のコードスニペットでは、このスニペットはフォームID902のFacebook URLフィールドであるフィールドID25とTwitter URLフィールドであるフィールド26でのみ使用しています。

ユーザーが上記のコードスニペットに記載されているものと一致しないリンクをこれらのフィールドに入力すると、フォームを送信した後にエラーが表示されます。

サイトのフォームとフィールドIDに合わせて、フォームとフィールドIDを更新する必要があります。これらのIDを見つけるのに役立つ場合は、このチュートリアルをご覧ください

このスニペットを追加すると、フォーム内でソーシャルメディアのURLを簡単に検証できます

これで完了です!ソーシャルメディアのURLの検証に成功しました。登録フォームを完了したら、ユーザーを自動的にログインさせることもしたいですか?登録後のユーザーの自動ログイン方法の記事をご覧ください。

アクションリファレンス: wpforms_process

よくある質問

Q: このスニペットにLinkedInを追加できますか?

A:もちろんです!LinkedInの上記の Сниппетに追加するには、この Сниппетを使用し、使用しているフォームのフォームとフィールドIDを更新してください。

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