お客様情報のFAX入力フィールドをフックで非表示にする方法

スポンサーリンク

お客様情報の入力欄であまり使われないと思われるFAX番号の入力フィールドを、非表示にする方法です。

WelcartのFAX番号入力

前回、フックで「ふりがなの入力フィールドを非表示にする方法」を紹介しましたが、それに比べると非常に面倒です。というのも、フリガナ入力部分には専用のフックが用意されていますが、FAX番号入力部分にはそれがないためです。

もくじ

  1. 利用するフック
  2. functions.phpにコードを記述
  3. まとめ

1. 利用するフック

  • フックの記述・・・usces_filter_apply_addressform
  • フックの場所・・・functions/template_func.php

それぞれ名前~FAX番号までを包括するフックなので、フィルターで出力内容を書き直す際にはそれらを全て記述(基本的にはコピペ)することになります。

2. functions.phpにコードを記述

今回は販売先が日本の場合の例です。

中国(CN)・アメリカとその他の国(US・default)の場合は、functions/template_func.phpの3057行目あたり以降の国名の記述(case 'CN':等と書いてある部分)を見つけて、そこから入力項目をコピペして使います。

2015/5/23更新:コードを更新しました。Welcart1.4.15にて確認。

add_filter('usces_filter_apply_addressform', 'my_apply_addressform', 10, 3);
function my_apply_addressform($formtag, $type, $data){
	global $usces, $usces_settings;
	$options = get_option('usces');
	$form = $options['system']['addressform'];
	$nameform = $usces_settings['nameform'][$form];
	$values = $data[$type];
	$applyform = usces_get_apply_addressform($form);
	$formtag = usces_custom_field_input($data, $type, 'name_pre', 'return');
	$formtag .= '<tr class="inp1">
	<th width="127" scope="row">' . usces_get_essential_mark('name1', $data) . __('Full name', 'usces').'</th>';
	if( $nameform ){
		$formtag .= '<td class="name_td">'.__('Given name', 'usces').'<input name="' . $type . '[name2]" id="name2" type="text" value="' . esc_attr($values['name2']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
		$formtag .= '<td class="name_td">'.__('Familly name', 'usces').'<input name="' . $type . '[name1]" id="name1" type="text" value="' . esc_attr($values['name1']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
	}else{
		$formtag .= '<td class="name_td">'.__('Familly name', 'usces').'<input name="' . $type . '[name1]" id="name1" type="text" value="' . esc_attr($values['name1']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
		$formtag .= '<td class="name_td">'.__('Given name', 'usces').'<input name="' . $type . '[name2]" id="name2" type="text" value="' . esc_attr($values['name2']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
	}
	$formtag .= '</tr>';
	$furigana = '<tr class="inp1">
	<th scope="row">' . usces_get_essential_mark('name3', $data).__('furigana', 'usces').'</th>';
	if( $nameform ){
		$furigana .= '<td>'.__('Given name', 'usces').'<input name="' . $type . '[name4]" id="name4" type="text" value="' . esc_attr($values['name4']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
		$furigana .= '<td>'.__('Familly name', 'usces').'<input name="' . $type . '[name3]" id="name3" type="text" value="' . esc_attr($values['name3']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
	}else{
		$furigana .= '<td>'.__('Familly name', 'usces').'<input name="' . $type . '[name3]" id="name3" type="text" value="' . esc_attr($values['name3']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
		$furigana .= '<td>'.__('Given name', 'usces').'<input name="' . $type . '[name4]" id="name4" type="text" value="' . esc_attr($values['name4']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" /></td>';
	}
	$furigana .= '</tr>';
	$formtag .= apply_filters( 'usces_filter_furigana_form', $furigana, $type, $values );
	$formtag .= usces_custom_field_input($data, $type, 'name_after', 'return');
	$formtag .= '<tr>
	<th scope="row">' . usces_get_essential_mark('zipcode', $data).__('Zip/Postal Code', 'usces').'</th>
	<td colspan="2"><input name="' . $type . '[zipcode]" id="zipcode" type="text" value="' . esc_attr($values['zipcode']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: inactive" />'.apply_filters('usces_filter_addressform_zipcode', NULL, $type) . apply_filters( 'usces_filter_after_zipcode', '100-1000', $applyform ) . '</td>
	</tr>';
	if( count( $options['system']['target_market'] ) == 1 ){
		$formtag .= '<input type="hidden" name="' .$type. '[country]" id="' .$type. '_country" value="' .$options['system']['target_market'][0]. '">';
	}else{
		$formtag .= '<tr>
		<th scope="row">' . usces_get_essential_mark('country', $data) . __('Country', 'usces') . '</th>
		<td colspan="2">' . uesces_get_target_market_form( $type, $values['country'] ) . apply_filters( 'usces_filter_after_country', NULL, $applyform ) . '</td>
		</tr>';
	}
	$formtag .= '<tr>
	<th scope="row">' . usces_get_essential_mark('states', $data).__('Province', 'usces').'</th>
	<td colspan="2">' . usces_pref_select( $type, $values ) . apply_filters( 'usces_filter_after_states', NULL, $applyform ) . '</td>
	</tr>
	<tr class="inp2">
	<th scope="row">' . usces_get_essential_mark('address1', $data).__('city', 'usces').'</th>
	<td colspan="2"><input name="' . $type . '[address1]" id="address1" type="text" value="' . esc_attr($values['address1']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" />' . apply_filters( 'usces_filter_after_address1', __('Kitakami Yokohama', 'usces'), $applyform ) . '</td>
	</tr>
	<tr>
	<th scope="row">' . usces_get_essential_mark('address2', $data).__('numbers', 'usces').'</th>
	<td colspan="2"><input name="' . $type . '[address2]" id="address2" type="text" value="' . esc_attr($values['address2']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" />' . apply_filters( 'usces_filter_after_address2', '3-24-555', $applyform ) . '</td>
	</tr>
	<tr>
	<th scope="row">' . usces_get_essential_mark('address3', $data).__('building name', 'usces').'</th>
	<td colspan="2"><input name="' . $type . '[address3]" id="address3" type="text" value="' . esc_attr($values['address3']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: active" />' . apply_filters( 'usces_filter_after_address3', __('tuhanbuild 4F', 'usces'), $applyform ) . '</td>
	</tr>
	<tr>
	<th scope="row">' . usces_get_essential_mark('tel', $data).__('Phone number', 'usces').'</th>
	<td colspan="2"><input name="' . $type . '[tel]" id="tel" type="text" value="' . esc_attr($values['tel']) . '" onKeyDown="if (event.keyCode == 13) {return false;}" style="ime-mode: inactive" />' . apply_filters( 'usces_filter_after_tel', '1000-10-1000', $applyform ) . '</td>
	</tr>';
	return $formtag;
}

元のコード(functions/template_func.phpの3057行目あたりのcase 'JP':からbreakまで)をコピーしてきて、FAX部分を消した(+最後にreturnで返した)だけです。

ただ、販売国が1つの時は国を非表示にするWelcartの機能を使うため、最初に$options = get_option('usces');を入れておきます。これがないと、国の入力フィールドが出てきてしまいます。

もしフリガナの入力フィールドを非表示にするのであれば、入力フィールドを非表示にするためのフックは使わず、直接このコードからフリガナ入力部分を取り除く方法でも可能です。

3. まとめ

確認画面では「FAX番号」の項目が出てきてしまう(多分メールでも出てくる)ものの、そこまで気にすることはないかなと。

確認画面での表示については、usces_filter_apply_addressform_confirmというフックが用意はされていますが、FAX番号の項目を消す為だけにしても全てを書き換える形になるため、やや強引なカスタマイズになるかと思います(Welcartフォーラムでも同様の質問あり→こちら)。

FAX番号はもともと必須項目ではないですが、入力欄がなくなるだけで画面はとてもすっきりして、顧客の心理的負担も減らせるでしょう。

フリガナとFAXのフィールドを削除

フリガナの入力フィールドを非表示にする方法と合わせて、カゴ落ち対策にどうぞ!

3 Responses to “お客様情報のFAX入力フィールドをフックで非表示にする方法”

  1. タコス より:

    こんにちは!welcartでテーマ「blanc」利用させて頂いております。

    こちらの記事を参考にさせて頂き、FAX番号の入力欄が無事に非表示にできました^^
    と、いうところまでは良かったのですが、発送・支払方法ページから「戻る」ボタンでお客様情報入力画面に戻ってくると、入力した情報が全て消えてしまっています(汗)
    functions.phpを元に戻すと入力した情報が復活するので、セッションが切れてしまっているというわけでは無さそうです。

    フィルターが掛って見えなくなっているという感じなのですが、もし解決策がわかればご教授頂けましたら幸いです。

    • まめ子(管理人) より:

      テーマをお使い頂き有難うございます。取り急ぎ確認してみました。確認バージョンはWordPress4.2.2+Welcart1.4.15です。

      3行目の$optionsの変数定義のところを、以下のコードに変えてみて下さい。これで如何でしょうか?

      global $usces, $usces_settings;
      $options = get_option('usces');
      $form = $options['system']['addressform'];
      $nameform = $usces_settings['nameform'][$form];
      $values = $data[$type];
      $applyform = usces_get_apply_addressform($form);
  2. タコス より:

    ご確認頂きありがとうございます!
    教えて頂いた通りに編集したところ無事フォームに入力した内容が消えなくなりました。
    ありがとうございますm(_ _)m

Copyright© 2017 Welcart カスタマイズ ブログ All Rights Reserved.