ミギムキ

[WordPress] Contact Form 7用のスマホ対応スタイル

Contact Form 7をサッと使うためのサンプルコードです。
スマホ表示に対応したレスポンシブスタイルでフォームを実装しています。

サンプルコード

html

<div class="cf7form"> <dl class="cf7form_input"> <dt>お名前</dt> <dd> [text* your-name placeholder "例:山田太郎"] </dd> <dt>会社名</dt> <dd> [text* your-company placeholder "例:株式会社○○"] </dd> <dt>メールアドレス</dt> <dd> [email* your-email placeholder "例:xxx@xxx.com"] </dd> <dt>電話番号</dt> <dd> [tel* your-tel placeholder "例:1234-56-7890"] </dd> <dt>郵便番号</dt> <dd> [text your-postcode placeholder "例:123-4567"] </dd> <dt>ご住所</dt> <dd> [text your-address placeholder "例:○○県○○市○○"] </dd> <dt>お問い合わせ内容</dt> <dd> [textarea* your-message placeholder "入力してください"] </dd> <dt>添付ファイル</dt> <dd> <div class="cf7form_input_file"> <label> [file your-file-01 limit:5MB filetypes:jpg|jpeg|gif|png|pdf|doc|docx|xls|xlsx] <p>ファイルを選択する</p> </label> </div> <div class="cf7form_input_file"> <label> [file your-file-02 limit:5MB filetypes:jpg|jpeg|gif|png|pdf|doc|docx|xls|xlsx] <p>ファイルを選択する</p> </label> </div> <div class="cf7form_input_file"> <label> [file your-file-03 limit:5MB filetypes:jpg|jpeg|gif|png|pdf|doc|docx|xls|xlsx] <p>ファイルを選択する</p> </label> </div> </dd> </dl> <div class="cf7form_policy"> <p><a href="/privacy/" target="_blank">プライバシーポリシー</a>に同意の上、送信ください。</p> [checkbox* your-privacy use_label_element "プライバシーポリシーに同意する"] </div> <div class="cf7form_submit"> [submit "送信する"] </div> </div> <script> jQuery(function($) { document.addEventListener('wpcf7mailsent', function(event) { const siteURL = window.location.protocol + "//" + window.location.host; setTimeout(() => { location = siteURL + '/contact/thanks/'; }, 3000); }, false); $('.cf7form_input_file input[type=file]').on('change', function () { const file = $(this).prop('files')[0]; $(this).parent().next('p').text(file.name); }); }); </script> <script> jQuery(function($) { document.addEventListener('wpcf7mailsent', function(event) { const siteURL = window.location.protocol + "//" + window.location.host; setTimeout(() => { location = siteURL + '/contact/thanks/'; }, 3000); }, false); $('.cf7form_input_file input[type=file]').on('change', function () { const file = $(this).prop('files')[0]; $(this).parent().next('p').text(file.name); }); }); </script>

フォームhtmlの後に記載しているjQueryのコードでは、それぞれ下記の処理を行っています。
①フォーム送信後にサンクスページへ遷移させる
②ファイル添付時にファイル名を表示させる
※添付ファイルの項目がない場合は、②の処理は不要となります

CSS

.cf7form_input, .cf7form_input dt, .cf7form_input dd { box-sizing: border-box; } .cf7form_input dt, .cf7form_input dd { margin: 0px; } .cf7form_input dt { font-weight: bold; } .cf7form_input dd input[type="text"], .cf7form_input dd input[type="tel"], .cf7form_input dd input[type="email"], .cf7form_input dd textarea { padding: 1em; width: 100%; border: none; background-color: #f7f7f7; } .cf7form_input dd textarea { height: 20em; } .cf7form_input_file + .cf7form_input_file { margin-top: 20px; } .cf7form_input_file label { display: block; position: relative; padding: 1.5em 4em; width: 90%; max-width: 300px; border: 1px solid #777; border-radius: 2em; cursor: pointer; } .cf7form_input_file input { display: none; } .cf7form_input_file p { position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); padding: 0px 1em; width: 100%; text-align: center; overflow: hidden; } .cf7form_policy { padding: 2em; margin: 30px auto 0px; width: 90%; max-width: 700px; border: 1px solid #777; text-align: center; } .cf7form_policy p { margin-bottom: 1em; } .cf7form_policy input, .cf7form_policy label { cursor: pointer;; } .cf7form_submit { margin-top: 30px; text-align: center; } .cf7form_submit input { padding: 0.5em 4em; border: 2px solid #3388dd; border-radius: 2em; background-color: #3388dd; outline: none; appearance: none; color: #fff; font-size: 1.2em; font-weight: bold; cursor: pointer; } .cf7form_submit .wpcf7-spinner { display: block; margin: 10px auto 0px; } @media screen and (max-width: 767.98px) { .cf7form_input dt { padding: 1em 0px 0px 0px; } .cf7form_input dd { padding: 1em 0px 1.5em; border-bottom: 1px solid #ddd; } } @media screen and (min-width: 768px) { .cf7form_input { display: flex; flex-wrap: wrap; } .cf7form_input dt, .cf7form_input dd { border-bottom: 1px solid #ddd; } .cf7form_input dt { display: flex; align-items: center; padding: 2em 1em 2em 0px; width: 20%; } .cf7form_input dd { padding: 2em 0px 2em 1em; width: 80%; } }

各入力項目のデザインを整えています。
スマホ表示時には要素を縦に並べてるようにしています。

functions.php

// Contact Form 7のpタグの自動挿入を無効化 function my_wpcf7_autop_or_not() { return false; } add_filter('wpcf7_autop_or_not', 'my_wpcf7_autop_or_not');

Contact Form 7の管理画面で入力したhtmlがページに出力される際、各タグにpタグが自動挿入されます。
今回指定するスタイルではこのpタグが邪魔になってしまうため、functions.phpに無効化の処理を追加します。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。