WoocommerceとContactform7を連携させてユーザー情報を自動入力させる

March 12, 2016

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;

参考記事

RELATED POSTS