【wordpress】Contact Form 7の入力項目に制御を入れる

wordpress

Contact Form7を使ったフォームの入力項目にカタカナ制御を入れる方法です。

フリガナの項目を全角カナのみにする方法を紹介します。

手順概要
  1. Contact Form 7で問合せフォームを作る
  2. function.phpに入力制御の処理を加える
スポンサーリンク

1.Contact Form 7で問合せフォームを作る

Contact Form7のプラグインをインストールして、問い合わせフォームを作ります。

スポンサーリンク

2.function.phpに入力制御の処理を加える

function.phpの一番下に以下の処理を記述します。(コピペでOK)

 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 === "firstname_kana" || $name === "lastname_kana" ) {
     // カタカナ以外だった場合
     if(!preg_match("/^[ァ-ヾ]+$/u", $value)) {
       $result->invalidate($tag, "全角カタカナで入力してください。");
     }
   }
   return $result;

 }

以下の部分を自身の問い合わせフォームの値に合わせて変更

if ( $name === “firstname_kana” || $name === “lastname_kana” ) {

Contact Form 7側で設定した
[text* firstname_kana placeholder”例)ヤマダ”]
[text* lastname_kana placeholder”例)ハナコ”]
と一致するようにする。

スポンサーリンク

簡単な解説

ここからは、コードの解説です。不要な方は読み飛ばしてOK。

1~3行目

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){
・・・
}

ContactForm7のtextまたはtext*で関数wpcf7_validate_kanaを実行する

太字の個所は一致させる。

関数 wpcf7_validate_kana の中身

$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 === “firstname_kana” || $name === “lastname_kana” ) {
// カタカナ以外だった場合
if(!preg_match(“/^[ァ-ヾ]+$/u”, $value)) {
$result->invalidate($tag, “全角カタカナで入力してください。”);
}
}
return $result;

”||”は演算子。(「or」、「または」の意味を持つ)

“/^[ァ-ヾ]+$/u” はカタカナという意味。

入力制御を行いたい項目が1つの場合

if ( $name === "firstname_kana" || $name === "lastname_kana" ) {

if ( $name === "firstname_kana") {

全角ひらがなのみにしたい場合

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

 if (!preg_match("/^[ぁ-ゞー]+$/u",$value)) {

英数のみにしたい場合

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

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