contact form7で文字の入力制御(ひらがなのみ・半角英数のみなど)する方法

今回紹介するのは、こんなときに便利なカスタマイズです。

  • お問い合わせフォームで、文字の入力制御をしたい
  • お名前のふりがなの入力で、ひらがなのみ入力できるようにしたい
  • 電話番号の入力で、数字のみ入力できるようにしたい
目次

contact form7でお問合せフォームを作成

contact form7をインストール後、お問合せフォームを作成します。
今回作成したコードはこちらです。(cssは省きます。)

<table>
  <tr>
    <th>
      <label for="form2">お名前 ふりがな</label>
      <span class="required">必須</span>
    </th>
    <td>
      <div>
        姓[text* yourlastname-kana id:form2]
      </div>
      <div>
        名[text* yourfirstname-kana id:form2]
      </div>
    </td>
  </tr>
  <tr>
    <th>
      <label for="form3">お名前</label>
      <span class="required">必須</span>
    </th>
    <td>
      <div>
        姓[text* yourlastname id:form3]
      </div>
      <div>
        名[text* yourfirstname id:form3]
      </div>
    </td>
  </tr>
  <tr>
    <th class="relative">
      <label for="form4">お電話番号(ハイフンなし)</label>
      <span class="any">任意</span>
    </th>
    <td>
     [text phone id:form4 size:11 minlength:10 maxlength:11]
    </td>
  </tr>
</table>

[confirm "確認画面へ"][back "入力画面に戻る"][submit "送信"]

functions.phpで入力制御の処理をする

functions.phpに以下を記述します。
詳細部分は、用途に合わせて変更してください。

// contactform7 文字制御
add_filter('wpcf7_validate_text', 'wpcf7_validate_kana', 11, 2); add_filter('wpcf7_validate_text*', 'wpcf7_validate_kana', 11, 2); function wpcf7_validate_kana($result,$tag){ $tag = new WPCF7_Shortcode($tag); $name = $tag->name;
  $value = isset($_POST[$name]) ? trim(wp_unslash(strtr((string) $_POST[$name], "\n", " "))) : "";

  // "firstname-kana" または "lastname-kana" の場合
  if ( $name === "yourlastname-kana" || $name === "yourfirstname-kana" ) {

    if (!preg_match("/^[ぁ-ゞー]+$/u",$value)) { // ひらがな以外だった場合
      $result->invalidate($tag, "全角ひらがなで入力してください。"); // エラーメッセージを表示
    }

  }
  // "phone" の場合
  if ( $name === "phone" ) {

    if(!preg_match("/^[0-9]+$/u", $value)) { // 半角数字以外だった場合
      $result->invalidate($tag, "半角数字で入力してください。"); // エラーメッセージを表示
    }

  }
  return $result;
}

カタカナで制御したい場合は、8行目をこちらに変更します。

if(!preg_match("/^[ァ-ヾ]+$/u", $value)) {

半角英数で制御したい場合は、15行目をこちらに変更します。

if(!preg_match("/^[a-zA-Z0-9]+$/u", $value)) {

実際の表示

ひらがな用フォームにひらがな以外を入れると、こんな感じでエラーメッセージも表示されるようになりました。

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

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次