2018.08.18

ContactForm7のフォーム送信時にユーザー登録を自動でおこなう方法

こんにちは、ゾノ( @ozonosho )です。

さて、今日のブログではWordPressのプラグイン「Contact Form 7」でフォーム送信時にユーザー登録を自動でおこなう方法を紹介したいと思います。

この方法を利用すれば、たとえば応募フォームで送信された応募情報を利用してそのままユーザー登録をおこなうことができます。

しかも登録できる内容はメールアドレスやパスワードなどの必須項目だけでなくカスタムフィールドにも対応可能のため、問い合わせフォームからの情報をもとにユーザーを作成したい場合にはぜひ利用してみてください。

ContactForm7のフォーム送信時にユーザー登録を自動でおこなう方法

実装は簡単で、下記のような関数をfunctions.phpに追加してください。

//フォーム送信時にユーザー登録をおこなう
function wpcf7_insert_user($contact_form) {
	//送信情報を取得
	$submission = WPCF7_Submission::get_instance();
	if($submission) {
		$formdata = $submission->get_posted_data();
		$userdata = array(
		    'user_login'    => $formdata['your-login'],
		    'user_email'    => $formdata['your-email'],
		    'user_pass'     => $formdata['your-password'],
		    'nickname'      => $formdata['your-nickname'],
		    'user_hisotry'  => $formdata['your-history']
		);
		//ユーザーデータ登録
		$user_id = wp_insert_user($userdata);
		//登録に成功した場合
		if(!is_wp_error($user_id)) {
			//ユーザーメタデータ登録
			update_user_meta($user_id, 'user_history', $formdata['your-history']);
		}
	}
}
add_action('wpcf7_mail_sent', 'wpcf7_insert_user', 10, 1);

ContactForm7がメール送信時のフック「wpcf7_mail_sent」を用意してくれているので、このフックを利用して処理をおこないます。

$formdata[”]の中身は、問い合わせフォームでご自身が設定した項目名称を入れてください。

ユーザー登録は関数「wp_insert_user」にて実行されます。
カスタムフィールドの値はwp_insert_userでは登録できないので、wp_insert_userが成功した場合にupdate_user_metaで更新することでカスタムフィールドの値も同時に登録することができます。

問い合わせフォームを送信して無事にユーザー情報が登録されていれば成功です。

ちなみに、複数の問い合わせフォームを利用している方は下記コードのようにフォームIDで判別しましょう。

//フォーム送信時にユーザー登録をおこなう
function wpcf7_insert_user($contact_form) {
	$id = $contact_form->id();
	if($id == 利用するフォームのID) {
		//送信情報を取得
		$submission = WPCF7_Submission::get_instance();
		if($submission) {
			$formdata = $submission->get_posted_data();
			$userdata = array(
			    'user_login'    => $formdata['your-login'],
			    'user_email'    => $formdata['your-email'],
			    'user_pass'     => $formdata['your-password'],
			    'nickname'      => $formdata['your-nickname'],
			    'user_hisotry'  => $formdata['your-history']
			);
			//ユーザーデータ登録
			$user_id = wp_insert_user($userdata);
			//登録に成功した場合
			if(!is_wp_error($user_id)) {
				//ユーザーメタデータ登録
				update_user_meta($user_id, 'user_history', $formdata['your-history']);
			}
		}
	}
}
add_action('wpcf7_mail_sent', 'wpcf7_insert_user', 10, 1);

おわりに

以上、今回の記事ではWordPressのプラグイン「Contact Form 7」でフォーム送信時にユーザー登録を自動でおこなう方法を紹介させていただきました。

この方法を利用すればユーザー登録だけでなく記事の投稿などもフォーム送信時におこなうことができるため、ぜひ色々と試してみてください。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む