質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

844閲覧

contactform7のカタカナ制御を2箇所入れたい

mowe

総合スコア17

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/10/16 06:19

プラグイン「contact form 7」に入力した内容をfunchions.phpで2箇所フリガナ制御したい

電話・アドレス・フリガナ制御を現在入れていますが、
フリガナの箇所が2箇所にあり、以下文を2回繰り返すと、funchions.phpのエラーで画面が真っ白になってしまいます。
複数指定する方法、または2回構文を繰り返す方法をお教え願いたいです。

エラーになるfunchions.php

<?php 〜〜〜〜〜〜〜〜〜〜関係ない部分の省略〜〜〜〜〜〜〜〜〜〜 /** * contact-form-7プラグインにて姓、名のフリガナが正しいかどうかを確認 * */ 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", " "))) : ""; // furiganaはフォーム側のnameです if ($name === "your-m-kana") { // カタカナの場合 if(!preg_match("/^[ァ-ヾ]+$/u", $value)) { $result->invalidate($tag, "全角カタカナで入力してください。"); } } return $result; } /** * contact-form-7プラグインにて姓、名のフリガナが正しいかどうかを確認 * */ 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", " "))) : ""; // furiganaはフォーム側のnameです if ($name === "your-n-kana") { // カタカナの場合 if(!preg_match("/^[ァ-ヾ]+$/u", $value)) { $result->invalidate($tag, "全角カタカナで入力してください。"); } } return $result; } ?>

わからないこと

そもそもこのセットを2回繰り返して良いものなのか、

それとも、
($name === "your-n-kana") {
の箇所に複数クラスを指定することはできるのか

補足情報

1回しか使わない場合は指定した1箇所に対して正常に動きます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

同じ名前の fanction は、複数登録できないので、1つ目と2つ目で function の名前を変えてください。 or 共通化して関数内で条件判断で分岐するようにしてください。

とりあえず、名前を変える例

add_filter('wpcf7_validate_text', 'wpcf7_validate_kana1', 11, 2); add_filter('wpcf7_validate_text*', 'wpcf7_validate_kana1', 11, 2); function wpcf7_validate_kana1($result,$tag){ (略) } add_filter('wpcf7_validate_text', 'wpcf7_validate_kana2', 11, 2); add_filter('wpcf7_validate_text*', 'wpcf7_validate_kana2', 11, 2); function wpcf7_validate_kana2($result,$tag){ (略) }

二つの function の違いは、条件分岐だけの違いみたいなので、条件を || 演算子( = or ) でつなげば、まとめられるのでは?

/** * contact-form-7プラグインにて姓、名のフリガナが正しいかどうかを確認 * */ 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", " "))) : ""; // furiganaはフォーム側のnameです if ( $name === "your-m-kana" || $name === "your-n-kana" ) { // $name が、'your-m-kana' か 'your-n-kana' の場合に実行 // カタカナの場合 if(!preg_match("/^[ァ-ヾ]+$/u", $value)) { $result->invalidate($tag, "全角カタカナで入力してください。"); } } return $result; }

PHP マニュアル 言語リファレンス 演算子 論理演算子 参照

投稿2018/10/16 06:42

編集2018/10/16 06:48
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mowe

2018/10/16 08:34

ありがとうございます! 後者の方法で繋げたところうまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問