Woocommerce会員がログインしている状態で、資料請求や、見積依頼等を行う場合、フォームに会員情報が自動で入力されている状態が好ましい。
WoocommerceとContactform7を連携させてユーザー情報を自動入力させる方法を紹介したいと思う。
今回自動入力させたい項目は以下。
- 会社名*別途カスタマイズ
- 電話番号
- 県
- 郵便番号
- 市区町村
- 住所1
- 住所2
function wpcf7_form_tag_filter($tag){ if(is_admin() || !is_array($tag)) return $tag; $name = $tag['name']; $user = wp_get_current_user(); if($user) { if($name == 'billing_company') { $tag['values'] = (array) $user->billing_company; } if($name == 'billing_last_name') { $tag['values'] = (array) $user->billing_last_name; } if($name == 'billing_first_name') { $tag['values'] = (array) $user->billing_first_name; } if($name == 'billing_phone') { $tag['values'] = (array) $user->billing_phone; } $pref = array( "JP01"=>"北海道", "JP02"=>"青森県", "JP03"=>"岩手県", "JP04"=>"宮城県", "JP05"=>"秋田県", "JP06"=>"山形県", "JP07"=>"福島県", "JP08"=>"茨城県", "JP09"=>"栃木県", "JP10"=>"群馬県", "JP11"=>"埼玉県", "JP12"=>"千葉県", "JP13"=>"東京都", "JP14"=>"神奈川県", "JP15"=>"新潟県", "JP16"=>"富山県", "JP17"=>"石川県", "JP18"=>"福井県", "JP19"=>"山梨県", "JP20"=>"長野県", "JP21"=>"岐阜県", "JP22"=>"静岡県", "JP23"=>"愛知県", "JP24"=>"三重県", "JP25"=>"滋賀県", "JP26"=>"京都府", "JP27"=>"大阪府", "JP28"=>"兵庫県", "JP29"=>"奈良県", "JP30"=>"和歌山県", "JP31"=>"鳥取県", "JP32"=>"島根県", "JP33"=>"岡山県", "JP34"=>"広島県", "JP35"=>"山口県", "JP36"=>"徳島県", "JP37"=>"香川県", "JP38"=>"愛媛県", "JP39"=>"高知県", "JP40"=>"福岡県", "JP41"=>"佐賀県", "JP42"=>"長崎県", "JP43"=>"熊本県", "JP44"=>"大分県", "JP45"=>"宮崎県", "JP46"=>"鹿児島県", "JP47"=>"沖縄県", ); $getuserstate = $user->billing_state; if($name == 'billing_state') { $tag['values'] = (array) $pref[$getuserstate]; } if($name == 'billing_postcode') { $tag['values'] = (array) $user->billing_postcode; } if($name == 'billing_city') { $tag['values'] = (array) $user->billing_city; } if($name == 'billing_address_1') { $tag['values'] = (array) $user->billing_address_1; } if($name == 'billing_address_2') { $tag['values'] = (array) $user->billing_address_2; } } return $tag; } add_filter('wpcf7_form_tag', 'wpcf7_form_tag_filter', 11);
上記のポイントは「県」がコードで表示されてしまうのを防ぐため以下のコードを使用していることだ。
$pref = array( "JP01"=>"北海道", "JP02"=>"青森県", "JP03"=>"岩手県", "JP04"=>"宮城県", "JP05"=>"秋田県", "JP06"=>"山形県", "JP07"=>"福島県", "JP08"=>"茨城県", "JP09"=>"栃木県", "JP10"=>"群馬県", "JP11"=>"埼玉県", "JP12"=>"千葉県", "JP13"=>"東京都", "JP14"=>"神奈川県", "JP15"=>"新潟県", "JP16"=>"富山県", "JP17"=>"石川県", "JP18"=>"福井県", "JP19"=>"山梨県", "JP20"=>"長野県", "JP21"=>"岐阜県", "JP22"=>"静岡県", "JP23"=>"愛知県", "JP24"=>"三重県", "JP25"=>"滋賀県", "JP26"=>"京都府", "JP27"=>"大阪府", "JP28"=>"兵庫県", "JP29"=>"奈良県", "JP30"=>"和歌山県", "JP31"=>"鳥取県", "JP32"=>"島根県", "JP33"=>"岡山県", "JP34"=>"広島県", "JP35"=>"山口県", "JP36"=>"徳島県", "JP37"=>"香川県", "JP38"=>"愛媛県", "JP39"=>"高知県", "JP40"=>"福岡県", "JP41"=>"佐賀県", "JP42"=>"長崎県", "JP43"=>"熊本県", "JP44"=>"大分県", "JP45"=>"宮崎県", "JP46"=>"鹿児島県", "JP47"=>"沖縄県", ); $getuserstate = $user->billing_state;