お客様情報のFAX入力フィールドをフックで非表示にする方法
スポンサーリンク
お客様情報の入力欄であまり使われないと思われるFAX番号の入力フィールドを、非表示にする方法です。
前回、フックで「ふりがなの入力フィールドを非表示にする方法」を紹介しましたが、それに比べると非常に面倒です。というのも、フリガナ入力部分には専用のフックが用意されていますが、FAX番号入力部分にはそれがないためです。
もくじ
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番号はもともと必須項目ではないですが、入力欄がなくなるだけで画面はとてもすっきりして、顧客の心理的負担も減らせるでしょう。
フリガナの入力フィールドを非表示にする方法と合わせて、カゴ落ち対策にどうぞ!
こんにちは!welcartでテーマ「blanc」利用させて頂いております。
こちらの記事を参考にさせて頂き、FAX番号の入力欄が無事に非表示にできました^^
と、いうところまでは良かったのですが、発送・支払方法ページから「戻る」ボタンでお客様情報入力画面に戻ってくると、入力した情報が全て消えてしまっています(汗)
functions.phpを元に戻すと入力した情報が復活するので、セッションが切れてしまっているというわけでは無さそうです。
フィルターが掛って見えなくなっているという感じなのですが、もし解決策がわかればご教授頂けましたら幸いです。
テーマをお使い頂き有難うございます。取り急ぎ確認してみました。確認バージョンはWordPress4.2.2+Welcart1.4.15です。
3行目の$optionsの変数定義のところを、以下のコードに変えてみて下さい。これで如何でしょうか?
ご確認頂きありがとうございます!
教えて頂いた通りに編集したところ無事フォームに入力した内容が消えなくなりました。
ありがとうございますm(_ _)m
[…] B.「お客様情報のFAX入力フィールドをフックで非表示にする方法」 […]
[…] では、早速 Bの「お客様情報のFAX入力フィールドをフックで非表示にする方法」 を参考にカスタマイズしてみましょう(実際に作業をしたのはショップ開設時の半年前なので、うろ […]