-
投稿者投稿
-
2024年5月3日 10:36 AM #139295
【お使いの Snow Monkey のバージョン】バージョン: 25.4.5
【お使いの Snow Monkey Forms のバージョン】バージョン 6.4.0
【お使いのブラウザ】Chrome
【当該サイトのURL】### 実現したいこと
お問い合わせ内容に日本語が含まれない場合に、メールを送信できなくしたい。
### 発生している問題
予期しない問題が発生しました。後でもう一度やり直すか、他の方法で管理者に連絡してください。
とあり、メールに日本語が含まれている場合も動作しませんでした。
### 試したこと
add_filter( 'snow_monkey_forms/spam/validate', function( $is_valid_not_spam, $fields, $entry, $form_data ) { $label = 'お問い合わせ内容'; // 検証するフィールドのラベル名 if ( $index = array_search( $label, array_column( $form_data['fields'], 'label' ) ) !== false ) { $form_field = $form_data['fields'][$index]; $field_id = $form_field['id']; $field_value = isset( $fields[$field_id] ) ? $fields[$field_id] : ''; if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $field_value ) ) { return sprintf( '「%s」は、日本語で入力してください。', $label ); } } return $is_valid_not_spam; }, 10, 4 );
上記でうまくいきませんでした。
お休みのところ恐縮ですが、ご対応はお休みあけで全然構いませんので、どうぞよろしくお願いいたします。
♥ 0いいねをした人: 居ません2024年5月4日 1:05 AM #139307まず、
snow_monkey_forms/spam/validate
フィルターフックは現状だと引数は spam かどうかの1つだけになります。なので、提示いただいたコードのように4つの引数を受け取ることはできません。そして、返り値も spam かどうか、つまりtrue
かfalse
だけなのでsprintf( '「%s」は、日本語で入力してください。', $label )
のようにメッセージを返すことはできません。ということで、
snow_monkey_forms/spam/validate
で送信内容を受け取ったり、メッセージを返すことはできないのですが、このフックで送信内容をもとに spam かどうか判定するのは結構使えるなと思うので、ここには送信内容を取得できる引数を追加したほうが良さそうだなと思いました!で、現状でできる方法を考えてみました。メッセージを返す方法は思いつかなかったのですが、送信内容をもとに管理者宛メールを送信するかどうかはカスタマイズできるので、ちょっとコードを書いてみました。
下記のコードを My Snow Monkey プラグインか子テーマの
functions.php
に追加してみてください。対象とする項目にあわせて適宜改変してください!add_filter( 'snow_monkey_forms/administrator_mailer/is_sended', function( $is_sended, $responser ) { $message = $responser->get( 'message' ); // 対象の項目の name を指定 if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $message ) ) { return false; // 管理者宛メールの送信に失敗させる } return $is_sended; }, 10, 2 );
♥ 0いいねをした人: 居ません2024年5月4日 8:28 AM #139308 -
投稿者投稿
- トピック「Snow Monkey Formsで日本語が含まれないお問い合わせ内容を送信できないようにしたい」には新しい返信をつけることはできません。