1. ホーム
  2. Wordpress
  3. WordPressでの問い合わせフォーム

問い合わせフォーム機能は「Jetpack」に標準機能として搭載されています。
通常はそちらでいいのでしょうが、私は以下の理由により「ContactForm7」を利用しています。

  • Jetpackで他に必要とする機能がない・余計な機能がある。
  • 本サイトを設置しているサーバーでは「Jetpack」の導入に難がある。
  • Google提供のアンチスパム対策「reCAPTCHA」を利用したい。

ContactForm7の設定

必要なページのみContactForm7のjsとcssを読み込む

本プラグインは非常に優秀なのですが、一つだけ困る点が「全てのページにContactFormのjsとcssが読み込まれてしまう」ことなんです。

手動ではありますが、問い合わせフォームの設置場所が限定されている場合は、「functions.php」に記述をすることにより、必要なページのみ読み込まれるようになります。
(本サイトではトップページのみ読み込ませるようにしています。)

// コンタクトフォーム7 出力制御 home のみ add_filter( 'wpcf7_load_js', '__return_false' ); add_filter( 'wpcf7_load_css', '__return_false' ); function cf7_enqueue_scripts_and_styles(){ if ( is_page( 'home' ) ) { if ( function_exists( 'wpcf7_enqueue_scripts' ) ) { wpcf7_enqueue_scripts(); } if ( function_exists( 'wpcf7_enqueue_styles' ) ) { wpcf7_enqueue_styles(); } } } add_action( 'wp_enqueue_scripts', 'cf7_enqueue_scripts_and_styles');

問い合わせフォームの見栄えを良くする

「ContactForm7」はcssを利用することにより簡単に見栄えを変えることが可能です。
本サイトでは以下のサイト様の設定を元にカスタマイズさせていただいております。

ちなみに、本サイトでは以下の様に設定しています。(class名は変更しています。)

/* ContactForm7の設定 */ .form__wrap { width: 100%; margin-right: auto; margin-left: auto; } .wpcf7 .cf7-template { color: #333; font-size: 16px; } .wpcf7 .cf7-template a { margin: 0; padding: 0; text-decoration: underline; color: inherit; transition: opacity .25s; } .wpcf7 .cf7-template a:hover { opacity: .5; transition: opacity .25s; } .wpcf7 .cf7-template div.form__row { display: flex; margin: 0; padding: 0; border-top: 1px dotted #4fc7d3; } .wpcf7 .cf7-template div.form__row.row-privacy, .wpcf7 .cf7-template div.form__row.row-submit { display: block; border-top: 0; margin-top: 1em; text-align: center; } .wpcf7 .cf7-template p.form__label, .wpcf7 .cf7-template p.form__body { margin: 0; padding: 0; box-sizing: border-box; } .wpcf7 .cf7-template p.form__label { width: 30%; padding: 1em 0em; } .wpcf7 .cf7-template p.form__body { width: 70%; padding: 1em 1em; } .wpcf7 .cf7-template div.form__row.row-privacy .form__body, .wpcf7 .cf7-template div.form__row.row-submit .form__body { width: 100%; } .wpcf7 .cf7-template p.form__label label { position: relative; margin: 0; padding: 0; padding-left: 3em; box-sizing: border-box; } .wpcf7 .cf7-template p.form__label label::after { content: "任意"; display: block; position: absolute; top: 0; left: 0; width: 36px; margin: 0; padding: 0 5px; border-radius: 2px; background-color: #f1f1f1; color: #929292; font-size: 11px; text-align: center; box-sizing: border-box; } .wpcf7 .cf7-template p.form__label.is-required label { position: relative; } .wpcf7 .cf7-template p.form__label.is-required label::after { content: "ひっす"; /* 実際のコードは漢字です (本記事では文字化けしてしまう為。) */ display: block; position: absolute; top: 0; right: 0; width: 36px; padding: 0 5px; background-color: #4fc7d3; color: #fff; font-size: 11px; text-align: center; } /* テキストフィールド */ .wpcf7 .cf7-template input[type=text], .wpcf7 .cf7-template input[type=tel], .wpcf7 .cf7-template input[type=url], .wpcf7 .cf7-template input[type=email], .wpcf7 .cf7-template textarea { width: 100%; margin: 0; padding: .5em 1em; border: 1px solid #4fc7d3; border-radius: 5px; box-shadow: none; background-color: #fff; color: inherit; font-family: inherit; font-weight: inherit; font-size: 16px; box-sizing: border-box; -webkit-appearance: none; -moz-appearance: none; appearance: none; } /* テキストフィールド placeholder */ .wpcf7 .cf7-template input[type=text]::placeholder, .wpcf7 .cf7-template input[type=tel]::placeholder, .wpcf7 .cf7-template input[type=email]::placeholder, .wpcf7 .cf7-template input[type=url]::placeholder, .wpcf7 .cf7-template input[type=date]::placeholder, .wpcf7 .cf7-template input[type=number]::placeholder, .wpcf7 .cf7-template textarea::placeholder { color: #ccc; } .wpcf7 .cf7-template input[type=text]:-ms-input-placeholder, .wpcf7 .cf7-template input[type=tel]:-ms-input-placeholder, .wpcf7 .cf7-template input[type=email]:-ms-input-placeholder, .wpcf7 .cf7-template input[type=url]:-ms-input-placeholder, .wpcf7 .cf7-template input[type=date]:-ms-input-placeholder, .wpcf7 .cf7-template input[type=number]:-ms-input-placeholder, .wpcf7 .cf7-template textarea:-ms-input-placeholder { color: #ccc; } .wpcf7 .cf7-template input[type=text]::-ms-input-placeholder, .wpcf7 .cf7-template input[type=tel]::-ms-input-placeholder, .wpcf7 .cf7-template input[type=email]::-ms-input-placeholder, .wpcf7 .cf7-template input[type=url]::-ms-input-placeholder, .wpcf7 .cf7-template input[type=date]::-ms-input-placeholder, .wpcf7 .cf7-template input[type=number]::-ms-input-placeholder, .wpcf7 .cf7-template textarea::-ms-input-placeholder { color: #ccc; } /* テキストフィールド フォーカス時 */ .wpcf7 .cf7-template input[type=text]:focus, .wpcf7 .cf7-template input[type=tel]:focus, .wpcf7 .cf7-template input[type=email]:focus, .wpcf7 .cf7-template input[type=url]:focus, .wpcf7 .cf7-template input[type=date]:focus, .wpcf7 .cf7-template input[type=number]:focus, .wpcf7 .cf7-template textarea:focus { outline: 0; border: 1px #4fc7d3 solid; box-shadow: 0 0 2px 2px rgba(79, 199, 211, 0.5); } /* チェックボックス */ .wpcf7 .cf7-template input[type=checkbox] { display: none; } .wpcf7 .cf7-template input[type=checkbox] + span { cursor: pointer; position: relative; margin: 0; padding: 0 1em 0 1.8em; font-size: inherit; box-sizing: border-box; transition: opacity .25s ease; } .wpcf7 .cf7-template input[type=checkbox] + span::before { content: ""; display: block; position: absolute; top: 0; left: 0; width: 1.24em; height: 1.24em; border: 1px solid #4fc7d3; border-radius: 4px; background-color: #fff; box-sizing: border-box; } .wpcf7 .cf7-template input[type=checkbox] + span::after { content: ""; opacity: 0; display: block; position: absolute; top: 0.15em; left: 0.44em; width: 0.4em; height: .8em; border-bottom: 3px solid #000; border-right: 3px solid #000; box-sizing: border-box; transform: rotate(40deg); transition: opacity .25s ease; } .wpcf7 .cf7-template input[type=checkbox]:checked + span { color: #ed107f; transition: all .25s ease; } .wpcf7 .cf7-template input[type=checkbox]:checked + span::before { opacity: 1; border: 1px solid #4fc7d3; box-shadow: 0 0 2px 2px rgba(79, 199, 211, 0.5); background-color: #4fc7d3; transition: opacity .25s ease; } .wpcf7 .cf7-template input[type=checkbox]:checked + span::after { opacity: 1; border-bottom: 3px solid #fff; border-right: 3px solid #fff; transition: opacity .25s ease; } /* ラジオボタン */ .wpcf7 .cf7-template input[type=radio] { display: none; } .wpcf7 .cf7-template input[type=radio] + span { cursor: pointer; position: relative; margin: 0; padding: 0 1em 0 1.8em; font-size: inherit; box-sizing: border-box; transition: opacity .25s ease; } .wpcf7 .cf7-template input[type=radio] + span::before { content: ""; display: block; position: absolute; top: 0; left: 0; width: 1em; height: 1em; border: 1px solid #4fc7d3; border-radius: 50%; background-color: #fff; box-sizing: border-box; transition: opacity .25s ease; } .wpcf7 .cf7-template input[type=radio] + span::after { content: ""; display: block; opacity: 0; position: absolute; box-sizing: border-box; transition: opacity .25s ease; } .wpcf7 .cf7-template input[type=radio]:checked + span { color: #ed107f; } .wpcf7 .cf7-template input[type=radio]:checked + span::before { box-shadow: 0 0 2px 2px rgba(79, 199, 211, 0.5); } .wpcf7 .cf7-template input[type=radio]:checked + span::after { opacity: 1; top: 0; left: 0; width: 1em; height: 1em; background-color: #4fc7d3; border-radius: 50%; box-sizing: border-box; transition: opacity .25s ease; } /* セレクト */ .wpcf7 .cf7-template span.select-wrap { position: relative; width: 100%; margin: 0; padding: 0; box-sizing: border-box; } .wpcf7 .cf7-template select { cursor: pointer; width: 100%; margin: 0; padding: .5em 3.5em .5em 1em; border: 1px solid #4fc7d3; border-radius: 4px; box-shadow: none; background-color: #fff; background-image: linear-gradient(90deg, #4fc7d3, #4fc7d3); background-position: 100% 0; background-size: 2em 3.5em; background-repeat: no-repeat; color: inherit; font-size: inherit; line-height: 1; box-sizing: border-box; transition: border-color 0.2s ease, outline 0.2s ease; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .wpcf7 .cf7-template select::-ms-expand { display: none; } .wpcf7 .cf7-template span.select-wrap::after { content: ""; pointer-events: none; position: absolute; display: block; width: .6em; height: .6em; top: 50%; right: .8em; margin-top: -3px; border-bottom: 2px solid #fff; border-right: 2px solid #fff; transform: rotate(45deg) translateY(-50%); transform-origin: 50% 0; box-sizing: border-box; } .wpcf7 .cf7-template select:focus { outline: 0; border: 1px #4fc7d3 solid; box-shadow: 0 0 2px 2px rgba(79, 199, 211, 0.5); } .wpcf7 .cf7-template span.select-wrap:focus-within::after { border-bottom: 2px solid #fff; border-right: 2px solid #fff; } /* 送信ボタン */ .wpcf7 .cf7-template .submit-btn { position: relative; width: 100px; height: 65px; max-width: 100%; margin: 0; padding: 0; margin-left: auto; margin-right: auto; } .wpcf7 .cf7-template input[type="submit"] { cursor: pointer; width: 100px; max-width: 100%; padding: 5px; box-shadow: none; border: 1px #4fc7d3 solid; border-radius: 5px; background-color: #4fc7d3; color: #fff; font-size: 16px; text-align: center; box-sizing: border-box; transition: all .25s; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .wpcf7 .cf7-template input[type="submit"]:disabled { cursor: not-allowed; box-shadow: none!important; border: 1px solid #f8f8f8!important; background-color: #4fc7d3!important; color: #fff!important; } .wpcf7 .cf7-template input[type="submit"]:hover { box-shadow: 0 0 2px 2px rgba(79, 199, 211, 0.5); background-color: #fff; color: #4fc7d3; transition: all .25s; } .wpcf7 .cf7-template input[type="submit"]:focus { outline: 0; border: 1px #4fc7d3 solid; box-shadow: 0 0 2px 2px rgba(79, 199, 211, 0.5); } @media only screen and (max-width: 768px) { .wpcf7 .cf7-template div.form__row { display: block; } .wpcf7 .cf7-template p.form__label { width: 100%; padding: 1.5em 1em 0; } .wpcf7 .cf7-template p.form__body { width: 100%; padding: 1em 1em 1.5em; } }

フォームの設定

<div class="form__wrap mode-n-cf7-top"> <div class="form__row row-name"> <p class="form__label is-required"><label for="name">お名前</label></p> <p class="form__body">[text* hoge-name id:hoge-name placeholder "お名前"]</p> </div> <div class="form__row row-email"> <p class="form__label is-required"><label for="email">メールアドレス</label></p> <p class="form__body">[email* hoge-email id:hoge-email placeholder "sample@sample.com"]</p> </div> <div class="form__row row-url"> <p class="form__label"><label for="url">ウェブサイト</label></p> <p class="form__body">[url hoge-url id:hoge-url placeholder "https://example.jp"]</p> </div> <div class="form__row row-select"> <p class="form__label is-required"><label for="select">お問い合わせ </label></p> <p class="form__body"><span class="select-wrap">[select* hoge-select id:hoge-select include_blank "選択A" "選択B" "選択C"]</span></p> </div> <div class="form__row row-message"> <p class="form__label is-required"><label for="message">お問い合わせ </label></p> <p class="form__body">[textarea* hoge-message id:hoge-message placeholder "お問い合わせ 容"]</p> </div> <div class="form__row row-submit"> <div class="submit-btn">[submit id:submit "送 信"]<div class="submit-bg"></div></div> </div> </div>