【WordPressカスタマイズ】ContactForm7の4つのカスタマイズをご紹介

私がいつもコンタクトフォーム7に追加する機能について記載していきます。

目次

フォームのレスポンシブ化

デフォルトのフォーム設定では、幅が狭くなっても、項目名と入力部分は横に並んだ状態です。これを一定幅以下の時に、項目名と入力部分を縦積みにします。

デフォルトのコンタクトフォームでは、<label>タグで囲まれていますが、これを<table>タグに変更します。

デフォルトの項目では以下のようになります。

<table class="contact-table">
  <tr>
    <th>お名前 (必須)</th>
    <td>[text* your-name]</td>
  </tr>

  <tr>
    <th>メールアドレス (必須)</th>
    <td>[email* your-email]</td>
  </tr>

  <tr>
    <th>題名</th>
    <td>[text your-subject]</td>
  </tr>

  <tr>
    <th>メッセージ本文</th>
    <td>[textarea your-message]</td>
  </tr>
</table>

<div>
[submit "送信"]
</div>

これで、各項目がテーブル要素になりました。

ポイントは、tableにクラスをつける部分になります。(例ではcontact-tableクラスを追加しています。)

次に、CSSのメディアクエリを使用して、contact-tableがある一定幅以下の時に適用されるようにします。

以下のCSSを追加します。

@media (max-width: 767px) {
  .contact-table th, .contact-table td {
    width: 100% !important;
    display: block;
  }
}

style.css

私の環境では、767px以下の場合がモバイル用のレイアウトになるような設定ですので、メディアクエリにはmax-width: 767pxを設定しています。

上記幅以下の場合、thとtdが100%幅となり、display:block指定によって縦に積み重なるようになります。

もちろん、important指定などは、使用するテンプレートなどでも異なってきますので、その辺りは調整する必要があると思います。

これで、レスポンシブな問い合わせができました。

住所入力の自動化

郵便番号を追加したら、住所が自動で入力されると楽ですよね。これには、YubinBangoというライブラリを使用します。

functions.phpへの追記

テーマファイルのfunctions.phpに以下のコードを追加

wp_enqueue_script( 'yubinbango', 'https://yubinbango.github.io/yubinbango/yubinbango.js', array(), null, true );

フォームの作成

国を指定するコードをtableタグの外に埋め込みます。日本は以下のコードです。

<span class="p-country-name" style="display:none;">Japan</span>

ここまでのコンタクトフォームの全貌は以下のようになります。

<span class="p-country-name" style="display:none;">Japan</span>
<table class="contact-table">
  <tr>
    <th>お名前 (必須)</th>
    <td>[text* your-name]</td>
  </tr>

  <tr>
    <th>メールアドレス (必須)</th>
    <td>[email* your-email]</td>
  </tr>

  <tr>
    <th>郵便番号</th>
    <td>[text your-zipcode class:p-postal-code minlength:8 size:8]</td>
  </tr>

  <tr>
    <th>住所</th>
    <td>[text your-address class:p-region class:p-locality class:p-street-address class:p-extended-address]</td>
  </tr>

  <tr>
    <th>題名</th>
    <td>[text your-subject]</td>
  </tr>

  <tr>
    <th>メッセージ本文</th>
    <td>[textarea your-message]</td>
  </tr>
</table>

<div>
[submit "送信"]
</div>

ショートコードを埋め込む

[contact-form-7 id="592" title="test" html_class="h-adr"

埋め込む際には上記赤の部分を追加します。(上記ショートコードはかっこを全角で入力しています。)

以下のページにテストを作成しています。

ぱんだクリップ
test | ぱんだクリップ [contact-form-7 id="592" title="test" html_class="h-adr"]

もちろん、ショートコードはテキストモードで貼り付けてくださいね。

以下のサイトを参考にさせていただきました。各部分の詳細な説明もありますので、是非以下記事も見てみてください。

オレインデザイン
Contact Form 7にYubinBangoで郵便番号から住所を自動入力させる方法 | オレインデザイン お問い合わせフォームや申し込みフォームなど、住所の入力を必要とするフォームにはよく付いています郵便番号を入力すると自動的に住所を入力してくれる機能ですが、導入す...

確認用メールアドレス入力欄

メールアドレスを入力してもらうフォームは結構多いと思います。しかし、間違えたメールアドレスだと、こちらから連絡もとれなくなってしましますよね。メールアドレスを入力させる場合は、確認フォームも合わせて作成したいですね。

functions.phpへの追記

functions.phpに以下のコードを追記します。

add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter_extend', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter_extend', 11, 2 );

function wpcf7_text_validation_filter_extend( $result, $tag ) {
  global $my_email_confirm;
  $tag = new WPCF7_Shortcode( $tag );
  $name = $tag->name;
  $value = isset( $_POST[$name] )
  ? trim( wp_unslash( strtr( (string) $_POST[$name], "\n", " " ) ) )
  : '';
  if ($name == "your-email"){
    $my_email_confirm=$value;
  }
  if ($name == "your-email_confirm" && $my_email_confirm != $value){
    $result->invalidate( $tag,"確認用のメールアドレスが一致していません");
  }

  return $result;
}

フォームの作成

さらに、上記の確認用のフォームを追加します。

コードの全貌は以下の通り。

<span class="p-country-name" style="display:none;">Japan</span>
<table class="contact-table">
  <tr>
    <th>お名前 (必須)</th>
    <td>[text* your-name]</td>
  </tr>

  <tr>
    <th>メールアドレス (必須)</th>
    <td>[email* your-email]</td>
  </tr>

  <tr>
    <th>確認用メールアドレス</th>
    <td>[email* your-email_confirm]</td>
  </tr>

  <tr>
    <th>郵便番号</th>
    <td>[text your-zipcode class:p-postal-code minlength:8 size:8]</td>
  </tr>

  <tr>
    <th>住所</th>
    <td>[text your-address class:p-region class:p-locality class:p-street-address class:p-extended-address]</td>
  </tr>

  <tr>
    <th>題名</th>
    <td>[text your-subject]</td>
  </tr>

  <tr>
    <th>メッセージ本文</th>
    <td>[textarea your-message]</td>
  </tr>
</table>

<div>
[submit "送信"]
</div>

以下の記事を参考にさせていただきました。是非確認してみてくださいね。

岡山のWordPressを使ったホームペ...
contact form 7に確認用メールアドレスの項目を設置する方法 ContactForm7にメールアドレスの確認機能を実装する方法をご紹介しています。メールアドレスの入力ミスを防ぐことができるので便利かと個人的には考えています。2016/4/18...

Google reCAPTCHAの設定

Googleから提供されているスパム等防止のための仕組みです。

ボットによるスパムなどを防いでくれるので、是非導入したい機能です。

Googleにログイン

reCAPTCHAを追加するアカウントでgoogleにログインしておきます。

Google Cloud
reCAPTCHA website security and fraud protection reCAPTCHA is bot protection for your website that prevents online fraudulent activity like scraping, credential stuffing, and account creation.

上記URLの右「MyReCAPTCHA」をクリックして、以下の画面の設定を行います。

上記赤枠を入力して、Registerを押します。Domainsは、httpとかは必要ないので、気を付けてください。

次の画面では、「keys」項目が表示されるので、「Site Key」と「Secret Key」をひかえておきます。

wordpressの設定画面に戻り、「お問合せ」->「インテグレーション」を押して、「キーを設定する」ボタンを押します。

そこに表示される「サイトキー」、「シークレットキー」にそれぞれ先ほどひかえたキーを貼り付け、保存します。

フォームに追加

コンタクトフォームにもどり、reCAPTCHAを挿入したい部分にカーソルを置きます。

「reCAPTCHA」ボタンがありますので、これを押し、「タグを挿入」ボタンを押します。

以上、私がコンタクトフォーム7を使用するときに必ず追加する機能です。これ以外にも、jQueryで動的に数値計算を行ったり、店舗だと注文先住所に発注者の住所をコピーしたりとか、カスタマイズの方向性はいろいろありますが、基本的にほぼ全部のフォームに入れる機能は基本的に上記4点をやっています。

また何か思いついたら随時追記していきます。

good wp life!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次