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のカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。